天天看點

Spring的配置注解相關的注解

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