본문 바로가기
728x90
반응형

SpringBoot26

삽질. groovy, spock 통합테스트 적용 spock 통합테스트를 하려는 과정이다. 나는 특정 조건에 따라 테스트 클래스에 @SpringBootTest, @DataJpaTest 둘 중에 하나를 적용하고 싶었다. @Conditional 은 스프링 컨텍스트가 확인하는 것이기 때문에 스프링 컨텍스트가 생성된 이후에 동작한다. @SpringBootTest, @DataJpaTest 이것들이 스프링 컨텍스트를 만드는 어노테이션인데 스프링 컨텍스트가 없는 시점에 이걸 조건적으로 적용하고 싶은거니까 애초에 @Conditional 은 못쓴다. 컴파일타임에 어노테이션이 고정된다(소스코드가 정해진다)junit의 @ExtendWith 으로 조건적으로 액티브 프로필을 적용할 순 있다.@ExtendWith(ConditionalTestExtension.class) 으로 .. 2024. 12. 19.
spock @LocalServerPort 할당 시점, setup, setupSpec 차이 통합테스트이기 때문에 @SpringBootTest 를 사용하였고 때문에 전체 스프링 컨텍스트가 생성됩니다.  내용 선 요약  ❌그냥 바로 Url = "http://localhost:$port" 로 사용하면 안됩니다.java.lang.NumberFormatException: For input string: "null" 에러 발생위 그림에서 보았든 port는 테스트 컨텍스트가 모두 초기화 된 후에 할당됩니다.하지만 클래스 변수인 baseUrl은 테스트 컨텍스트 초기화 중에 할당되기 때문에 우리가 원하는 "http://localhost:8080" 형태가 아닌 "http://localhost:null" 이 되기때문에 에러가 발생합니다.  ⭕그럼 어떻게 해야 하느냐? setup() 메소드를 사용해야합니다.setu.. 2024. 11. 20.
swagger ui 에서 json 이쁘게 출력하기 (springfox 2.9.2 -> 3.0.0) 🎈 현재 swagger response 표시 방법, 문제점 (@ApiResponse)🎈 @ApiModelProperty 사용법과 단점🎈 @ApiResponse 를 사용해서 json response 이쁘게 만드는 방법 2가지🎈 springfox 2.9.2 -> 3.0.0 업그레이드🎈 추가 내용 (Springfox 와 springdoc)   현재 springboot 2.5.5, swagger 는 springfox 2.9.2 버전을 사용하고 있습니다. http://localhost:8080/swagger-ui.html 로 swagger ui 에 접속하면 각 api 마다 아래와 같이 response가 보입니다.    🎈 현재 swagger response 표시 방법, 문제점 (@ApiResponse).. 2024. 10. 30.
@Transactional 롤백 @Transactional이 적용된 메서드 안에서 unchecked exception (RuntimeException, NullPointerException 등)이 발생하면 해당 트랜잭션은 기본적으로 롤백되고, aborted(중단) 상태로 전환됩니다. 이로 인해 트랜잭션 블록 내의 다른 SQL 명령문이 실행되지 않으며, "current transaction is aborted, commands ignored until end of transaction block"와 같은 오류 메시지가 나타납니다.예를 들어, 키중복 등으로 인해 DataIntegrityViolationException이 발생하여 트랜잭션이 롤백되면, 트랜잭션 블록 내의 후속 SQL 명령은 무시됩니다.  checked exception (예.. 2024. 7. 22.
[SpringBoot] 필터, 인터셉터 호출 흐름, 적용 방법 필터 - 서블릿이 제공하는 기능인터셉터 - 스프링이 제공하는 기능 웹과 관련된 공통 관심사항을 처리함적용되는 순서와 범위, 사용방법이 다름인터셉터가 더 편리하고 다양한 기능을 제공함   필터 필터 제한HTTP 요청 -> WAS -> 필터 -> 디스패쳐 서블릿 -> 컨트롤러 //로그인 사용자 HTTP 요청 -> WAS -> 필터(적절하지 않은 요청이라 판단, 서블릿 호출X) //비 로그인 사용자  필터 체인HTTP 요청 -> WAS -> 필터1 -> 필터2 -> 필터3 -> 서블릿 -> 컨트롤러필터는 체인으로 구성되는데, 중간에 필터를 자유롭게 추가할 수 있다. 예를 들어서 로그를 남기는 필터를 먼저 적용하 고, 그 다음에 로그인 여부를 체크하는 필터를 만들 수 있다.  필터 인터페이스를 구현하고 등록하면.. 2024. 5. 20.
728x90
반응형