一、Autowired注入方式(以注入連接池為例)
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"
@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)
@Configuration public class JdbcConfiguration { @Bean // 聲明要注入的屬性前綴,SpringBoot會自動把相關屬性通過set方法注入到DataSource中 @ConfigurationProperties(prefix = "jdbc") public DataSource dataSource() { DruidDataSource dataSource = new DruidDataSource(); return dataSource; } }