application.properties配置文件
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/springboot
jdbc.username=root
jdbc.password=root
1.属性注入
1.属性注入类
@ConfigurationProperties(prefix = "jdbc")
public class JdbcProperties {
private String driverClassName;
private String url;
private String username;
private String password;
public String getDriverClassName() {
return driverClassName;
}
public void setDriverClassName(String driverClassName) {
this.driverClassName = driverClassName;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
- 在类上通过@ConfigurationProperties注解声明当前类为属性读取类
- prefix="jdbc"读取属性文件中前缀为jdbc的值
- 在类上定义各个属性,名称必须与属性文件中jdbc.后面部分一致
2.配置类
@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfig {
@Bean
public DataSource dataSource(JdbcProperties jdbc){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(jdbc.getDriverClassName());
dataSource.setUrl(jdbc.getUrl());
dataSource.setUsername(jdbc.getUsername());
dataSource.setPassword(jdbc.getPassword());
return dataSource;
}
}
- 通过@EnableConfigurationProperties(JdbcProperties.class)来声明要使用JdbcProperties这个类的对象
2.更优雅的注入
如果一段属性只有一个Bean需要使用,我们无需将其注入到一个类中,而是直接在需要的地方声明即可:
@Configuration
public class JdbcConfig {
@Bean
@ConfigurationProperties(prefix = "jdbc")
public DataSource dataSource(){
DruidDataSource dataSource = new DruidDataSource();
return dataSource;
}
}
- 直接把@ConfigurationProperties(prefix="jdbc")声明在需要使用的@Bean的方法上,然后SpringBoot就会自动调用这个Bean的set方法,完成注入。使用的前提是:该类必须有对应属性的set方法