1.Autowired注入方式(以注入連接池為例)
application.properties 配置文件
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/springboot
jdbc.username=root
jdbc.password=root
1. 創建一個屬性讀取類:JdbcProperties
/**
* 屬性讀取類
* prefix: 為application.properties文件中的前綴
*/
@ConfigurationProperties(prefix = "jdbc") //讀取配置文件,聲明一個類是讀取配置類
public class JdbcProperties {
private String driverClassName; //配置文件中的屬性名稱
private String url;
private String username;
private String password;
//get、set方法
}
-
在類上通過@ConfigurationProperties注解聲明當前類為屬性讀取類
-
prefix="jdbc"讀取屬性文件中,前綴為jdbc的值。
-
在類上定義各個屬性,名稱必須與屬性文件中 jdbc. 后面部分一致,並且必須具有 getter 和 setter 方法
-
SpringBoot默認會讀取文件名為 application.properties 的資源文件,所以配置文件名必須為 application.properties
2. 創建另一個類 JdbcConfiguration 使用這個屬性
-
通過@EnableConfigurationProperties(JdbcProperties.class)來聲明要使用JdbcProperties這個類的對象
-
然后你可以通過以下方式在 JdbcConfiguration 類中注入 JdbcProperties:
@Configuration //聲明一個類為Java配置類,相當於一個xml文件
@EnableConfigurationProperties(JdbcProperties.class) //啟用屬性讀取類
public class JdbcConfiguration {
@Autowired
private JdbcProperties jdbcProperties; //注入讀取類
@Bean //把方法返回值注入到spring容器
public DataSource dataSource(){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(this.jdbcProperties.getDriverClassName());
dataSource.setUrl(this.jdbcProperties.getUrl());
dataSource.setUsername(this.jdbcProperties.getUsername());
dataSource.setPassword(this.jdbcProperties.getPassword());
return dataSource;
}
}
2. 構造函數注入
@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfiguration {
private JdbcProperties jdbcProperties;
public JdbcConfiguration(JdbcProperties jdbcProperties){
this.jdbcProperties = jdbcProperties;
}
@Bean
public DataSource dataSource() {
// 略
}
}
3. @Bean方法的參數注入
@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfiguration {
@Bean
public DataSource dataSource(JdbcProperties jdbcProperties) {
// ...
}
}
4. 把 @ConfigurationProperties(prefix = "jdbc") 聲明在需要使用的 @Bean 的方法上
然后 SpringBoot 就會自動調用這個 Bean(此處是DataSource)的 set 方法,然后完成注入。使用的前提是:該類必須有對應屬性的 set 方法.
@Configuration
public class JdbcConfiguration {
@Bean
// 聲明要注入的屬性前綴,SpringBoot會自動把相關屬性通過set方法注入到DataSource中
@ConfigurationProperties(prefix = "jdbc")
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
return dataSource;
}
}
參考資源
每天學習一點點,每天進步一點點。
