Random Port의 SpringBoot 테스트를 진행할 때 Transactional이 적용되지 않는 문제를 직면하여 이유를 간단히 알아보았습니다. 잘못된 내용이 있다면 지적 부탁드립니다. @SpringBootTest의 Web Environment SpringBootTest의 Web Environment 설정은 네 가지가 있다. 기본값인 MOCK은 mocking 된 서블릿(WebApplicationContext)을 로드하며 NONE의 경우는 서블릿 환경을 아예 제공하지 않는다. 반면 RANDOM_PORT 혹은 DEFINED_PORT 옵션을 사용하면 각각 임의의, 혹은 지정된 포트로의 실제 서블릿 환경(EmbeddedWebApplicationContext)을 로드한다. 이로 인해 RANDOM_PORT 혹..
필드 주입도 순환 참조를 검사해 준다? 스프링의 의존성 주입과 관련하여 코드를 작성해 보던 중, 필드 주입 또한 순환 참조를 검사해 주는 것을 확인하여 의문이 생겼다. 기존에 생성자 주입을 권장하는 이유는 빈의 생명주기 중 처음 두 단계 중 1번의 인스턴스 생성을 위한 생성자 호출에서 바로 의존성을 주입해야 하므로 순환 참조를 찾을 수밖에 없기 때문으로 이해했다. 빈 객체의 인스턴스 생성 단계 의존성 주입 단계 @PostConstruct나 InitializingBean 인터페이스의 구현 메서드에 의한 초기화 단계 스프링 컨테이너 종료 시 @PreDistroy나 DisposableBean 인터페이스의 구현 메서드에 의한 소멸 단계 이번에 새로 경험한 것은 생성자 주입이 아닌 필드 주입과 같은 방법으로 빈을..
목차 1. @Autowired 어노테이션 2. @Autowired를 통한 의존성 주입 방법 3. 생성자 주입을 사용하는 이유 4. @Primary 혹은 @Qualifier를 통해 주입될 구현체 명시하기 @Autowired 어노테이션 스프링 컨테이너에 어노테이션을 통해 빈을 등록하는 방법은 크게 두 가지다. @Bean 어노테이션을 통한 빈 등록 (메서드 레벨) @Component 어노테이션을 통한 빈 등록 (클래스 레벨) @Bean의 경우 메서드에 붙여 해당 메서드를 통해 반환되는 객체를 Bean으로 관리할 때 사용한다. 이와 달리 @Component는 클래스에 붙여 해당 클래스 타입을 기반으로 빈을 관리하도록 한다. @Repository, @Service, @Controller 등의 어노테이션들은 @Co..
PRG 패턴이란? 웹 개발 시 새로고침으로 인한 중복된 HTTP Post요청을 방지하기 위해 서버가 클라이언트의 리다이렉션(Redirection)을 유도하는 방법. POST 요청에 대한 처리를 Redirect 하여 GET 요청을 다시 처리한다. (Post-Redirect-Get) PRG 패턴의 필요 상황 브라우저의 새로고침은 마지막에 보냈던 HTTP 요청을 다시 보내는 기능이다. 그러나, POST 요청이 새로고침으로 인해 동일한 요청을 담아 다시 보내진다면 아래와 같이 의도하지 않은 상황이 발생할 수 있다. 위와 같이 사용자가 블로그에 새 글을 작성해 서버로 POST 요청을 보냈다 가정하자. 일반적으로 글 작성을 완료하면 서버에서 현재 작성한 글에 대한 상세 보기 페이지를 반환해준다. 만약 서버가 PRG..
- Total
- Today
- Yesterday
- multiplebagsfetchexception
- logback-spring.xml
- 자바
- Payload 암호화
- Spring Boot Monitoring
- Spring
- Jenkins 예약 배포
- springboottest
- 우테코 프리코스
- MySQL
- stubbing
- GitHub Discussion Template
- Fromtail
- JPA JSON
- Spring 테스트
- 생성자 주입
- JPA
- 람다식
- java switch case
- 의존성 주입
- MySQL 이벤트 스케줄
- RandomPort
- GitHub Discussion
- 우테코
- GitHub Discussion 템플릿
- 함수형 인터페이스
- Java
- 스프링
- 우테코 5기
- invokedynamic
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |