@Primary
@Bean(name = "primaryDataSource")
@ConfigurationProperties("datasource.primary")
public DataSource primaryDataSource() {
// data.primary.hikari.* 같은 속성이 HikariConfig에 적용되지 않음
return DataSourceBuilder.create().type(HikariDataSource.class).build();
}
datasource:
primary:
url: jdbc:mysql://localhost:3306/primarydb
username: primary_user
password: primary_pass
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
maximum-pool-size: 10
pool-name: PrimaryHikariPool
DataSourceBuilder.create().type(HikariDataSource.class).build()로 기본 객체 생성 후 @ConfigurationProperties를 적용하여 yml/properties값을 setter로 채워 넣음
메소드에 사용시 기본객체 생성 => setter로 값 채움
https://stackoverflow.com/questions/43232021/using-configurationproperties-annotation-on-bean-method
Using `@ConfigurationProperties` annotation on `@Bean` Method
Could someone give a MWE of how to use the @ConfigurationProperties annotation directly on a @Bean method? I have seen countless examples of it being used on class definitions - but no examples ye...
stackoverflow.com
- HikariDataSource 자바클래스로 설정
@Bean
@ConfigurationProperties("datasource.primary")
DataSourceProperties primaryDataSourceProperties() {
return new DataSourceProperties();
}
@Bean
@ConfigurationProperties("datasource.primary.hikari")
HikariConfig primaryHikariConfig() {
return new HikariConfig();
}
@Primary
@Bean(name = "primaryDataSource")
@ConfigurationProperties("datasource.primary")
DataSource primaryDataSource(DataSourceProperties properties,
HikariConfig primaryHikariConfig) {
hikariConfig.setJdbcUrl(properties.getUrl());
hikariConfig.setUsername(properties.getUsername());
hikariConfig.setPassword(properties.getPassword());
hikariConfig.setDriverClassName(properties.getDriverClassName());
return new HikariDataSource(hikariConfig);
}
datasource:
primary:
jdbc-url: jdbc:mysql://localhost:3306/testdb
username: root
password: 1234
hikari:
maximum-pool-size: 20
minimum-idle: 5
connection-timeout: 30000
- List에 값 주입
@Bean
@ConfigutationProperties(prefix="logging.level")
public List<String> getList() {
return new ArrayList<String>();
}
####################
@Value로 List 주입
logging:
level:
- INFO
- WARN
- ERROR
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class LoggingConfig {
@Value("${logging.level}")
private List<String> levels;
public void printLevels() {
System.out.println("Logging Levels: " + levels);
}
}
Logging Levels: [INFO, WARN, ERROR]
'spring-boot' 카테고리의 다른 글
@Conditional 조건별 Bean 생성 (0) | 2025.04.29 |
---|---|
RestClient (0) | 2024.10.05 |
Serve Static Resources with Spring (0) | 2024.09.27 |
spring-boot Grpc (0) | 2023.12.20 |
spring-boot-starter-parent 설정 - gradle & maven (0) | 2023.11.27 |