Spring的配置注解
- 相關的注解
-
- 元件掃描
- 建立配置類
相關的注解
@component:表明該類會作為元件類,并告知spring要建立bean
@componentScan:表明開啟元件掃描功能,可以指定掃描對應的包或指定的類
@ContextConfiguration:多用于在單元測試類裡面引入對應的配置檔案和配置類的資訊
@ContextConfiguration(Locations="…/applicationContext.xml")
@ContextConfiguration(classes = SimpleConfiguration.class)。
元件掃描
spring應用上下文中所有的bean都會指定一個id
@component注解會将類的小寫名作為該bean的id
@Named可以代替@component的注解的作用,給對應的bean進行相關的命名的操作;
@Autowired進行對應的裝配的操作
(a)在構造器上面進行注入
private CompactDisco cd
@Autowired
public CDplayer (CompactDisco cd ){
this.cd =cd;
}
(b)在屬性set上面也可以進行注入的操作
@Autowired
public void setCompactDisco(CompactDisco cd ){
this.cd=cd ;
}
在裝配的時候會出現null的空指針的異常,可以在Autowired上面的屬性required進行設定
建立配置類
@Configuration表明該類為一個配置類
這裡的java配置類我們不再采用componentScan進行對應的掃描的操作
采用
@Bean
public CompactDisco sgtPepprs(){
return new People();
}
此注解告訴了spring這個方法将會傳回一個對象,該對象要注冊為spring應用上下文中的bean
對應的bean的id和帶有@Bean注解的方法名是一樣的,這裡的就是sgtPepprs,同樣可以在baen的屬性裡面進行指
@PropertySource
Spring 通過 @PropertySource 讀取外部的資源檔案:
ignoreResourceNotFound = true 忽略沒有找到的配置檔案
@PropertySource(value= {“classpath:jdbc.properties”}, ignoreResourceNotFound = true)
@Configuration //通過該注解來表明該類是一個Spring的配置,相當于一個xml檔案
@ComponentScan(basePackages = "cn.td.springboot.javaconfig") //配置掃描包
@PropertySource(value= {"classpath:jdbc.properties"}, ignoreResourceNotFound = true) //讀取外部檔案擷取jdbc參數值
public class SpringConfig {
@Value("${jdbc.url}")
private String jdbcUrl;
@Value("${jdbc.driverClassName}")
private String jdbcDriverClassName;
@Value("${jdbc.username}")
private String jdbcUsername;
@Value("${jdbc.password}")
private String jdbcPassword;
@Bean(destroyMethod = "close")
public DataSource dataSource() {
BoneCPDataSource boneCPDataSource = new BoneCPDataSource();
// 資料庫驅動
boneCPDataSource.setDriverClass(jdbcDriverClassName);
// 相應驅動的jdbcUrl
boneCPDataSource.setJdbcUrl(jdbcUrl);
// 資料庫的使用者名
boneCPDataSource.setUsername(jdbcUsername);
// 資料庫的密碼
boneCPDataSource.setPassword(jdbcUsername);
// 檢查資料庫連接配接池中空閑連接配接的間隔時間,機關是分,預設值:240,如果要取消則設定為0
boneCPDataSource.setIdleConnectionTestPeriodInMinutes(60);
// 連接配接池中未使用的連結最大存活時間,機關是分,預設值:60,如果要永遠存活設定為0
boneCPDataSource.setIdleMaxAgeInMinutes(30);
// 每個分區最大的連接配接數
boneCPDataSource.setMaxConnectionsPerPartition(100);
// 每個分區最小的連接配接數
boneCPDataSource.setMinConnectionsPerPartition(5);
return boneCPDataSource;
}
@Bean // 通過該注解來表明是一個Bean對象,相當于xml中的<bean>
public UserDAO getUserDAO(){
return new UserDAO(); // 直接new對象做示範
}
}
spring的配置的加載
@Bean
public CompactDisco stCompactDisco(){
return new StCompactDisco();
}
@Bean
public Cdplayer cdPlayer1(){
return new Cdplayer(stCompactDisco());
}
@Bean
public Cdplayer cdpLayer2(){
return new Cdplayer(stCompactDisco());
}
因為stCompactDisco上面已經具有注解bean,spring會攔截所有對它的調用,并確定直接傳回該方法所建立的bean
而不是每次都對它進行實際的調用
spring預設是單例的是以二個Cdplayer會得到相同的StCompactDisco