1. 程式人生 > >正確理解springboot的常用註入方式

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

autowired 完成 mysql sources con new 聲明 博文 lib

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
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

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