spring(21)
-
[스프링빈] Junit5 환경에서 테스트 진행중 @EnableJpaAuditing 오류
[문제발생] 주요 오류는 다음과 같다. Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jpaAuditingHandler': Cannot resolve reference to bean 'jpaMappingContext' while setting constructor argument Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jpaMappingContext': JPA metamodel must not be empty Caused by: java.l..
2023.09.02 -
[리팩토링] ILikeYou 프로젝트 스프링 이벤트, pub/sub구조 적용 (의존성 줄이기)
기능을 추가하다 보니, service 에서 다른 service와 결합도가 너무 높아졌다. 그리고 서비스 계층이 수행하는 일이 너무 많아져서 코드가 복잡해져서 가독성도 좋지 않았다. 그래서 코드를 기능(행위)에 따라 분리하기 위해서 찾아보다가 스프링 이벤트라는 것을 발견했다. 동작 원리는 위 그림과 같다. pub/sub 구조는 3가지로 분류된다. 1. 이벤트 객체(ApplicationEvent) //이벤트 처리에 필요한 내용을 담고 있음 @Getter public class EventLiked extends ApplicationEvent { private LikeablePerson likeablePerson; public EventLiked(Object source, LikeablePerson likeab..
2023.08.02 -
[SpringBoot] GET, POST 이외의 HTTP 메서드 사용하기 위한 설정
application.yml 설정 spring: mvc: hiddenmethod: filter: enabled: true HTML 에서 delete 메서드 사용하여 form전송 예시 취소
2023.05.05 -
[SpringBoot] @ToString(callSuper = true)
[문제] lombok 에서는 @ToString 이라는 편리한 기능을 제공한다. 직접 오버라이딩하지 않아도 알아서 ToString을 바로 사용할 수 있게끔 만들어준다. BaseEntity 가 id, createDate, modifyDate 등 공통값을 가지게 하고 Entity는 이를 상속받게끔 구현했다. 하지만 Entity 에서는 createDate, modifyDate 값을 사용할 수가 없었다. createDate, modifyDate는 오버라이딩하지 않았기 때문이다. [해결] 아주 간단했다. 자식 Entity에 @ToString(callSuper = true)를 적용하면 된다. "callSuper = true" 는 부모가 가지고 있는 필드까지 적용시키는 것이다. Default값은 false 이기 때문에..
2023.04.13 -
[SpringBoot] 글 삭제했을 때 원래 페이지로 redirect 되게 하기
String[] split = referrer.substring(referrer.indexOf('?')).split("\\="); String page = split[1]; [ 문제 발생 ] 게시판을 만들다가 의문이 들었다. 앵커라는 것을 공부하던 중에 해당 스크롤로는 돌아가는데 삭제를 하게 되면 ? 참고로 해당 프로젝트에서 삭제를 위해서는 question_list 에서 게시글 클릭시 --> URL : [ /question / detail / { id값 } ] --> URL : [ / question / delete / {id값} ] 게시글을 삭제하면 기존에 내가 있던 페이지가 어디든 1번 페이지로 돌아간다. 만약 데이터가 굉장히 많고 페이지가 100개씩 있다고 생각한다면 이렇게 불편할 수가 없다. 삭제..
2023.03.31 -
[SpringBoot] 하나의 form을 재활용 하기 위한 방법 (ex_등록,수정을 하나의 form으로 <csrf>)
게시판 중 게시글 수정을 구현하고 있었다. 기존에는 수정을 위한 form을 새로 만들었는데 의미없는 중복 코드가 발생함을 느꼈다. 방법이 없을까 하고 찾아보니 역시 있었다. 간단하게 예를 들어보았다. 참고로 타임리프와 spring security를 사용한다. 제목 내용 - action 속성을 삭제하고 CSRF 값을 설정하기 위한 hidden 형태의 input 엘리먼트를 수동으로 추가한다. - 스프링 시큐리티의 규칙에 따라 CSRF 값을 수동으로 추가하기 위해서는 다음과 같이 해야 한다. - action 속성 없이 폼을 전송하면 현재의 URL을 기준으로 전송이 된다. - 즉, 질문 등록시에 브라우저에 표시되는 URL은 /question/add이기 때문에 POST로 폼 전송시 action 속성에 /quest..
2023.03.31