-
[Gradle] fianlizedBy, dependsOn 이용해서 task 자동 실행시키기
gradle task를 작성하다보면 특정 task 이 후 다른 task를 실행시키거나 task를 실행하기 전에 특정 task 실행시킬 필요가 있다. 예를들면, ‘bootWar를 실행하기전에 반드시 test를 수행한다. test가 성공해야만 bootWar를 수행한다.’ 등이 있을 듯 하다. 이런 task의 관계를 finalizedBy, dependsOn 을 이용해 제어 할 수 있다. (gradle 6.9(groovy) 버전 기준입니다.) finalizedBy task 이 후 실행시킬 task를 설정해준다. 단, 해당 task의 성공/실패 여부와 상관없이 실행시킨다. TaskA.finalizedBy('Ta... Read More
-
[SPRING] Spring rest docs에서 원하는 필드만 문서화하기
테스트코드를 작성하고 Spring rest docs를 만들 때 사용되는 body의 필드, path parameter, query parameter를 모두 명시해주어야 오류없이 정상적으로 실행이 되고 문서가 만들어진다. 없으면 바로 오류가 나온다. 명시 안된 부분에 대해서 명시하라고 한다. org.springframework.restdocs.snippet.SnippetException: The following parts of the payload were not documented: { "code" : "code-01", "message" : "THIS IS TEST" } 정확한 문서를 위해 ... Read More
-
[Gradle] gradle dependency report 보기
Gradle Report 가끔 의존성을 설정하지않은 라이브러리가 보일때도 있고 버전이 여러개로 나오는 경우도 있다. 특정 상위패키지로 인해 자동으로 들어온건데, 그 경로를 추적해서 찾기가 생각보다 힘들다. gradle에서 지원하는 task 중 dependencies를 보여주는 것도 있지만 텍스트형태의 트리구조라 깔끔하지는 않다. 그런 이유로 gradle에서 플러그인으로 reporting 기능을 지원해준다. Plugin 설정 build.gradle에 플러그인을 입력해주면 된다. (gradle 6.9 기준) plugins { id 'project-report' } Reporting 플러그인을 ... Read More
-
[SPRING/JPA] failed to lazily initialize a collection of role 오류
오류 fetch = FetchType.LAZY로 설정 된 entity의 데이터를 사용할 때 데이터조회를 못하면서 아래 오류가 발생했다. failed to lazily initialize a collection of role: com.my.jpa.entity.xxx.yyy, could not initialize proxy - no Session 원인 Lazy 로딩을 하기 위해서는 조회를 했던 영속성 컨텍스트가 유지가 되어야 하는데, 해당 영속성 컨텍스트가 끝나버려서 없어진게 원인이다. 즉, 조회를 진행한 트랜잭션이 이미 종료되었다고 보면 될 듯 하다. 해당 트랜잭션이 유지가 되어야 Lazy 로딩이 가능... Read More
-
[SPRING] Controller에서 빈 문자열을 NULL로 받기
컨트롤러에서 파라미터를 받을 때, 전달 값이 없는 String이 null이 아니라 “” 로 올 때가 있다. 값이 없는 경우 Null로 받기를 원해서 찾아보니 여러가지 방법이 있었다. 그 방법들을 정리해본다. 하나의 컨트롤러보단 글로벌하게 설정하는 방향으로 접근했다. @InitBinder 컨트롤러에 사용하는 어노테이션으로 데이터가 바인딩 될 때 호출이 된다. 보통 사용을 원하는 컨트롤러에 개별적으로 설정하는데, 공통적으로 하고 싶다면 @ControllerAdvice 를 이용해서 설정하면 된다고 한다. @ControllerAdvice public class GlobalBinding{ @InitBin... Read More