728x90
https://www.baeldung.com/spring-boot-annotations
org.springframework.boot.autoconfigure
org.springframework.boot.autoconfigure.condition
@SpringBootApplication
Spring Boot application base class
@Configuration, @EnableAutoConfiguration, @ComponentScan 애노테이션을 기본 속성으로 캡슐화함
@SpringBootApplication
class VehicleFactoryApplication {
public static void main(String[] args) {
SpringApplication.run(VehicleFactoryApplication.class, args);
}
}
@EnableAutoConfiguration
자동구성활성화, Spring Boot가 클래스 Path에서 자동 구성 bean을 찾고 자동 적용해줌
** @Configuration 와 같이 사용
@Configuration
@EnableAutoConfiguration
class VehicleFactoryConfig {}
Auto-Configuration Conditions
@ConditionalOnClass and @ConditionalOnMissingClass
Spring은 annotation's argument is present/absent (존재/부재) 여부에 따라서 자동 구성 빈 사용
@Configuration
@ConditionalOnClass(DataSource.class)
class MySQLAutoconfiguration {
//...
}
@ConditionalOnBean and @ConditionalOnMissingBean
특정 bean의 유무에 따라 조건을 정의
@Bean
@ConditionalOnBean(name = "dataSource")
LocalContainerEntityManagerFactoryBean entityManagerFactory() {
// ...
}
@ConditionalOnProperty
속성 값에 대한 조건 생성
@Bean
@ConditionalOnProperty(
name = "usemysql",
havingValue = "local"
)
DataSource dataSource() {
// ...
}
@ConditionalOnResource
특정resource 존재할 때만 정의사용
@ConditionalOnResource(resources = "classpath:mysql.properties")
Properties additionalProperties() {
// ...
}
@ConditionalOnWebApplication and @ConditionalOnNotWebApplication
현재 애플리케이션이 Web Application 인지 체크해서 조건 생성
@ConditionalOnWebApplication
HealthCheckController healthCheckController() {
// ...
}
@ConditionalExpression
(조건식)
복잡한 조건에 따라 정의 사용
Spring은 SpEL 표현식이 true 일 때 정의를 사용하겠다는 의미
@Bean
@ConditionalOnExpression("${usemysql} && ${mysqlserver == 'local'}")
DataSource dataSource() {
// ...
}
@Conditional
더 복잡한 조건에서 맞춤 조건을 평가하는 클래스로 체크할 때
@Conditional(HibernateCondition.class)
Properties additionalProperties() {
//...
}
728x90
'Web > spring' 카테고리의 다른 글
[Annotation] Spring Web Annotations (0) | 2023.03.31 |
---|---|
[Annotation] Spring Core Annotations (0) | 2023.03.30 |
[Spring] 요청에 따른 부가응답 추가하기 (0) | 2023.03.29 |
[Spring Interceptor] Introduction to Spring MVC HandlerInterceptor (0) | 2023.03.29 |
[Spring JUnit5 Test] 간단한 코드 작성 (0) | 2023.03.21 |