先写一个配置类
@Component
@Data
@ConfigurationProperties(prefix = "servers")
public class ServerConfig {
private String ipAddress;
private int port;
private long timeout;
}
yml 文件这样写
servers:
ipAddress: 192.168.0.1
port: 9056
timeout: -1
datasource:
driverClassName: com.mysql.jdbc.Driver456
启动类这样写(只为测试)
@SpringBootApplication
//@EnableConfigurationProperties({ServerConfig.class})
public class Springboot13ConfigurationApplication {
//临时定义只为测试
@Bean
@ConfigurationProperties(prefix = "datasource")
public DruidDataSource dataSource(){
DruidDataSource ds = new DruidDataSource();
return ds;
}
public static void main(String[] args) {
ConfigurableApplicationContext applicationContext = SpringApplication.run(Springboot13ConfigurationApplication.class, args);
ServerConfig bean = applicationContext.getBean(ServerConfig.class);
System.out.println(bean);
DruidDataSource bean1 = applicationContext.getBean(DruidDataSource.class);
System.out.println(bean1);
System.out.println(bean1.getDriverClassName());
}
}
这里说明一些问题:
1.配置类里面的Component和启动类里的@EnableConfigurationProperties({ServerConfig.class})注解不能同时存在,因为这两个注解会分别在spring容器中注入一个bean,如果同时存在会在spring容器中注入一个相同的bean,从而引发bean不唯一问题
2.使用@ConfigurationProperties(prefix = “servers”)该注解会报如下提示
在maven的pom文件中添加如下依赖即可
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</dependency>
3.在使用durid时需同时引入spring-jdbc依赖,具体原因还在考查,目前本人使用的是jdk11和springboot2.6.4
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.8</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>