일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- XML
- unix
- Framework
- @JUnit
- Spring JDBC
- java spring
- @test
- JDBC TEMPLATE
- 컨테이너
- Linux
- Spring Boot
- spring
- SpringJDBC
- spring framework
- STS
- myBatis
- pointcut
- AOP
- @Spring-Test
- JdbcTemplate
- POJO
- 리눅스
- Di
- java
- 마이바티스
- Ubunt
- @AspectJ
- spring aop
- 프로퍼티
- Dependency Injection
Archives
- Today
- Total
개키우는개발자 : )
커스톰 @Conditional 본문
반응형
요약 및 핵심 개념
@Conditional
애노테이션을 사용하여 조건에 따라 Tomcat과 Jetty 웹 서버 중 하나를 선택하는 방법을 다루었습니다. 기존의 학습 테스트에서 구현한 조건부 로직을 실제 자동 구성 시나리오에 적용하여, 특정 라이브러리가 프로젝트에 포함되어 있는지 여부에 따라 자동으로 웹 서버를 선택하는 방법을 배웠습니다.
핵심 내용
Tomcat과 Jetty 선택 기준:
- 프로젝트에 특정 라이브러리(Tomcat 또는 Jetty)가 포함되어 있는지를 기준으로 웹 서버를 선택합니다.
- 스프링의
ClassUtils.isPresent
유틸리티 메소드를 사용해 해당 클래스가 존재하는지 확인하여 true 또는 false를 반환하는 방식으로 구현했습니다.
조건부 애노테이션의 활용:
@Conditional
애노테이션을 사용하여 특정 클래스가 존재할 때만 빈을 등록하도록 설정했습니다.- 중복되는 코드를 줄이기 위해 메타 애노테이션을 활용한 커스텀 애노테이션(
ConditionalOnMyClass
)을 정의했습니다.
커스텀 애노테이션 구현:
ConditionalOnMyClass
애노테이션을 만들어, 클래스 이름을 속성 값으로 받아들여 해당 클래스가 존재할 때만 조건을 만족하도록 구현했습니다.MyClassCondition
클래스에서 메타데이터에서 클래스 이름을 읽어와 클래스가 존재하는지 확인하는 로직을 구현했습니다.
자동 구성 로직의 테스트:
- 라이브러리를 포함하거나 제외하는 설정을 통해 Tomcat과 Jetty가 각각 정상적으로 선택되는지 확인했습니다.
Gradle
에서 특정 라이브러리를 제외하는 설정을 통해 자동 구성 동작을 검증했습니다.
자동 구성의 확장 가능성:
- 다양한 기술이나 라이브러리를 사용하는 경우 해당 라이브러리의 존재 여부에 따라 자동 구성할 수 있는 구조를 만들 수 있습니다.
- 예를 들어, Redis나 JPA와 같은 추가적인 라이브러리도 조건부 자동 구성을 통해 손쉽게 적용할 수 있습니다.
결론
@Conditional
애노테이션을 통해 조건부 자동 구성을 적용하고, 이를 기반으로 특정 라이브러리의 존재 여부에 따라 웹 서버를 선택하는 방법을 학습했습니다. 자동 구성의 기본적인 동작 원리와 확장 가능성을 이해하는 것이 핵심이었으며, 다음 시간에는 자동 구성과 커스텀 구성 간의 우선순위 조정 방법에 대해 다룰 예정입니다.
반응형
'토비의 스프링 부트 - 이해와 원리 > 섹션8 - 조건부 자동 구성' 카테고리의 다른 글
스프링 부트의 @Conditional (2) | 2024.10.09 |
---|---|
자동 구성 정보 대체하기 (0) | 2024.10.09 |
@Conditional 학습테스트 (0) | 2024.10.09 |
@Conditional과 Condition (0) | 2024.10.09 |
스타터와 Jetty 서버 구성 추가 (0) | 2024.10.09 |
Comments