正確理解springboot的常用注入方式


springboot的屬性注入


以注入dataSource為例
1.springboot默認讀取的文件是放在resources目錄下的名為application.properties或application.yml的文件
在application.properties中寫入以下屬性
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/數據庫名稱
jdbc.username=rootxxx
jdbc.password=xxx

或者application.yml中寫入如下格式的屬性
jdbc:
 driverClassName: com.mysql.jdbc.Driver
 url: jdbc:mysql://127.0.0.1:3306/數據庫名稱
 username: rootxxx
 password: xxx
2.引入依賴
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.6</version>
</dependency>
3.創建一個類,用於提供屬性注入
@ConfigurationProperties(prefix = "jdbc")
public class JdbcProperties {
private String url;
private String driverClassName;
private String username;
private String password;
// ... 略
// getters 和 setters
}


- 在類上通過@ConfigurationProperties注解聲明當前類為屬性讀取類
- prefix="jdbc"讀取屬性文件中,前綴為jdbc的值。
- 在類上定義各個屬性,名稱必須與屬性文件中jdbc.后面部分一致

 

 

4.創建一個JdbcConfig類使用這些屬性
@Configuration
@EnableConfigurationProperties(JdbcProperties.class)
public class JdbcConfig {

 

//例子
@Bean
public DataSource dataSource(JdbcProperties jdbc) {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl(jdbc.getUrl());
dataSource.setDriverClassName(jdbc.getDriverClassName());
dataSource.setUsername(jdbc.getUsername());
dataSource.setPassword(jdbc.getPassword());
return dataSource;
}
}

通過@EnableConfigurationProperties(JdbcProperties.class)來聲明要使用JdbcProperties這個類的對象


當然,JdbcProperties的注入有三種方法
4.1@Autowired注入
@Autowired
private JdbcProperties prop;


4.2構造函數注入
private JdbcProperties prop;
public JdbcConfig(Jdbcproperties prop){
this.prop = prop;
}


4.3聲明有@Bean的方法參數注入
上面的例子就是使用該方法注入(//例子)

4.4這種方式的注入看起來很復雜,但是復用性很高,如果我們只需要在單個地方使用dataSource,可以使用下面的方法注入
@Configuration
public class JdbcConfig {

@Bean
// 聲明要注入的屬性前綴,SpringBoot會自動把相關屬性通過set方法注入到DataSource中
@ConfigurationProperties(prefix = "jdbc")
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
return dataSource;
}
}

我們直接把@ConfigurationProperties(prefix = "jdbc")聲明在需要使用的@Bean的方法上,然后SpringBoot就會自動調用這個Bean(此處是DataSource)的set方法,
然后完成注入。使用的前提是:該類必須有對應屬性的set方法!
---------------------
作者:turboCai
來源:CSDN
原文:https://blog.csdn.net/c905080860/article/details/81030744
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM