프로젝트/파이널프로젝트-대학 행정 그룹웨어10 스프링 부트 프로젝트에 AOP로 트랜잭션 처리하기 ㅁ 하나의 서비스에 하나의 쿼리만 실행시, 쿼리가 성공적으로 수행되면 자동으로 스프링에서 커밋처리가 된다.- 그런데 하나의 서비스에 여러 dml문을 수행할 때가 있다.여러 dml문이 정상적으로 다 완료되었을 때만 커밋이 진행되어야 한다.중간에 하나라도 예외가 발생하면 rollback해서 모든 dml문들이 취소되어야 한다. ㅁ 스프링 부트의 경우- ~ServiceImpl 클래스의 트랜잭션 처리가 필요한 메소드(여러개의 쿼리를 실행하는 메소드)들 위에 @Transactional을 붙인다.- 각 메소드 위가 아닌 클래스 위에 @Transactional을 붙이면 이 클래스 안의 모든 메소드에 트랜잭션 처리가 적용된다. ㅁ - 스프링 부트에서 @Transactional처럼 내장된 AOP 기능을 사용할 때.. 2024. 12. 2. Interceptor로 관리자 권한 체크하기 ㅁ Interceptor (정확히는 HandlerInterceptor)- servlet에서 특정 controller가 실행되기 전, 실행된 후에 낚아채서 실행할 내용을 정의할 수 있다.- 특정 요청을 할 수 있는 회원이 맞는지(로그인 여부 판단),특정 요청을 할 수 있는 권한이 맞는지(회원의 권한 체크) - preHandle(전처리 담당 메소드) : DispatcherServlet이 특정 Controller를 호출하기 전에 낚아채는 영역- postHandle(후처리 담당 메소드) : Controller에서 요청 처리 후 DispatcherServlet으로 뷰 정보가 돌아가는 순간 낚아채는 영역 ㅁ 현재 문제점 - 관리자 계정이 아닌 일반 계정으로 로그인해본다. - 주소창에 http:.. 2024. 12. 1. 스프링 스케줄러를 사용해서 매일 밤 12시에 쿼리 실행하기 ㅁ 참고- https://moca7.tistory.com/333 스프링 스케줄러 글- https://moca7.tistory.com/340 스프링부트 스케줄러 글 ㅁ 스프링의 경우 (1) 매번 묵시적으로 실행시키고자 하는 작업들을 정의할 클래스를 만들기- 그리고 그 클래스를 빈으로 등록한다. 빈등록은 3가지 방법이 있었다. (2) 해당 클래스 내에 각 작업별 메소드를 작성하기- 반환형은 반드시 void여야 하고, 매개변수는 없어야 한다. 메소드명은 상관없다.- 메소드 위에 @Scheduled 어노테이션을 부여한다. (3) servlet-context.xml에서 스케줄링을 사용하기 위해 task를 추가하기 ㅁ 스프링 부트의 경우 - (3)번 대신 스프링 부트 프로젝트를 만들면 기본으로 만들어지.. 2024. 12. 1. coolsms로 예약 신청 결과 문자로 전송하기 ㅁ coolsms란?- 기업 및 개발자를 위한 메시지 발송 플랫폼으로, SMS, LMS, MMS, 카카오 알림톡 등의 메시지를 안정적이고 빠르게 발송할 수 있는 API 서비스입니다. 이 API를 쉽게 사용할 수 있도록 다양한 프로그래밍 언어용 SDK(라이브러리)도 함께 제공합니다. ㅁ coolsms 홈페이지- https://coolsms.co.kr/ 세상에서 가장 안정적이고 빠른 메시지 발송 플랫폼 - 쿨에스엠에스손쉬운 결제 전용계좌, 신용카드, 계좌이체 등 국내 결제 뿐만 아니라 해용신용카드로 한번의 카드번호 등록으로 자동충전까지 지원합니다. 전용계좌, 신용카드, 계좌이체 등 다양한 결제 방식coolsms.co.kr ㅁ 순서 (1) 홈페이지에서 회원가입을 하고 본인 인증을 한다. (2) API.. 2024. 11. 30. [문제] 예약 내역에서 비품이 안 보임 ㅁ 문제 발생 - 현재 예약 테이블에 예약 데이터가 비품 하나, 시설 하나 있는 상태다.(맨 위는 정적으로 임시로 박아놓은 데이터다.) - 화면에서 list를 받아서, classifcation이 "비품"이냐 "시설"이냐에 따라서 조건처리를 해서 화면에 뿌려주는데 이상하게 나온다. ㅁ 원인 - ReservationDto를 다음 List를 조회해와서 model 객체에 담았다.- 그리고 List에서 ReservationDto를 꺼내서 이 예약이 비품 예약인지, 시설 예약인지 판단 후에 classification의 값을 담았는데, 계속 덮어 씌워져서 "비품" 예약도 "시설" 예약으로 조건처리되어서 분류, 번호, 이름을 못뽑고 있었다. ㅁ 해결 - ReservationDto에 Stri.. 2024. 11. 27. [문제] 나갔다 들어오면 채팅이 안보임 ㅁ 문제 발생 - user1과 user2가 채팅방 1에 접속해서 서로 메세지를 보냈다. 지금은 정상적으로 메세지가 잘 보인다. - 문제는 user1이 다른 채팅방을 갔다가 다시 이전에 있던 채팅방으로 돌아와서 메세지를 보내면, 계속 채팅방 1에 접속해있던 user2는 그 메세지가 보이지만 user1은 자기 메세지도 상대가 보낸 메세지도 화면에 보이지 않는다. ㅁ 원인 - 맨 처음에는 채팅방 1에 연결되어 있는 세션이 2개다. - user1이 다른 방에 갔다가 다시 채팅방 1로 돌아와서 메세지를 보낸 경우, 현재 채팅방 1에 연결되어 있는 세션이 1개다.user2의 세션은 남아있지만 user1의 세션은 제거되고 다시 추가가 되지 않고 있다. ㅁ 해결 @Requi.. 2024. 11. 19. [문제] 1대1 채팅방 상대의 사번이 보이지 않고 내 사번이 보임 ㅁ 문제 발생 - 사번이 B0001인 사원으로 로그인해서 사번이 B0005인 사원과 1:1 채팅방을 만들었다.- B0001인 사원은 상대방인 B0005가 잘 보인다. - 사번이 B0005인 사원으로 로그인하고 메신저 페이지로 왔다.상대방 사번인 B0001이 보여야 하는데 내 사번인 B0005가 보인다. // 2. 로그인한 유저가 속한 채팅방 리스트 조회하기. List list = chatService.selectChatRoomList(userNo); // 로그인한 유저가 속한 채팅방 DTO가 list로 담김. List> list2 = new ArrayList(); // 응답 페이지로 넘길 list. for(ChatRoomDto c : list) { Map map = new .. 2024. 11. 14. 파이널 프로젝트 받아오기 [초대받은 팀원 입장] ㅁ https://moca7.tistory.com/334- 여기서 sts4 설치부터 한다.- sts4 설치하고 워크스페이스 선택해서 실행까지 일단 한다. ㅁ https://moca7.tistory.com/229- 세미 설정 때처럼 C:\workspaces에 final-workspace 폴더를 만든다.- sts4로 워크스페이스를 C:\workspaces\final-workspace로 선택하고 실행(launch)한다.이러면 C:\workspaces\fianl-workspace에 ".metadata" 폴더가 만들어진다. - 이 글의 워크스페이스 세팅, 서버 세팅은 건너뛴다. - 프로젝트를 깃에서 가져온다.현재 C:\workspaces\semi-workspace에 프로젝트는 없는 .. 2024. 11. 8. Spring Boot 프로젝트에 Swagger 적용하기 https://velog.io/@gmlstjq123/SpringBoot-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EC%97%90-Swagger-UI-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0 https://colabear754.tistory.com/99 ㅁ 의존성을 추가할 파일- Gradle : build.gradle 파일에 의존성 추가.- Maven : pom.xml 파일에 의존성 추가. - 의존성을 추가한다는 것은 프로젝트에서 사용할 외부 라이브러리나 코드를 프로젝트에 포함시킨다는 의미다. ㅁ 라이브러리 (Springdoc-openapi 사용) - Springfox, Springdoc 라이브러리에서 Swagger UI를 제공한다. - Spri.. 2024. 11. 7. 파이널 프로젝트 만들기 (스프링 부트) [프로젝트를 만들어서 깃에 올리는 사람 입장] (0) 깃에 워크스페이스가 아닌 프로젝트를 올린다.- 팀원 중 한명만 프로젝트를 올리고 다른사람을 초대할 수 있다.- 다른 팀원들은 모두 다 워크스페이스를 각자 만들어야 한다. 워크스페이스 세팅도 각자 해야 한다.- 워크스페이스 세팅, 서버세팅은 다 각자해야 한다. - 프로젝트는 한명이 만든다. 프로젝트 이름은 팀명을 따서 각 팀별로 다르게 만든다. - 스프링 부트 프로젝트다. STS4, 스프링 부트 버전 3.2.11, 자바 17버전을 사용한다. (1) C:\workspaces에 final-workspace 폴더를 만든다. (2) sts4로 워크스페이스를 C:\workspaces\final-workspace로 선택하고 실행한다.- 이러면 C:\wo.. 2024. 11. 6. 이전 1 다음