該類是一個配置類,作用和bean.xml作用是一樣的。
1.@Configuration
作用:指定當前類是一個配置類。
2.@ComponentScan
作用:指定spring容器在創建容器時要掃描的包
屬性:value和basePackages作用是一樣的,都是指定創建
容器時指定的包。
使用此註解就相當於配置了:
<context:component-scan base-package="com.itheima.dao"/>
3、@Bean
作用:把當前方法的返回值作爲bean對象存入spring容器中
屬性:name,用於指定bean的id,不寫時,默認爲爲當前方法名稱
注意:當時用註解配置方法是,如果有參數,spring框架會去容器中查找
是否有bean對象,查找的方法和@Autowired是一樣的。
例:(1)處dataSource引用(2)處dataSource
程序:
@Configuration
@ComponentScan(basePackages = "com.itheima")
public class springConfig {
@Bean(name = "runner")
public QueryRunner createQueryRunner(DataSource dataSource){
(1)
return new QueryRunner(dataSource);
}
@Bean
public DataSource dataSource(){
(2)
try {
ComboPooledDataSource ds=new ComboPooledDataSource();
ds.setDriverClass("");
ds.setJdbcUrl("");
ds.setUser("");
ds.setPassword("");
return ds;
}catch (Exception e){
throw new RuntimeException(e);
}
}
}
4.@Import
作用:用於導入其他的配置類
屬性:value,用於指定其他類的字節碼文件
5.@PropertySource
作用:用於讀取properties文件
屬性:value,指定文件的名稱和路徑
關鍵字:classpath,表示類路徑下的
6.@Qualifier
在注入方法的名稱時可以獨立使用
程序:
SpringConfiguration類:
@ComponentScan("com.itheima")
@Import(JdbcConfig.class)
@PropertySource("classpath:jdbcConfig.properties")
public class SpringConfiguration {
}
JdbcConfig類:
public class JdbcConfig {
@Value("${jdbc.driver}")
private String driver;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
/**
* 用於創建一個QueryRunner對象
* @param dataSource
* @return
*/
@Bean(name="runner")
@Scope("prototype")
public QueryRunner createQueryRunner(@Qualifier("ds2") DataSource dataSource){
return new QueryRunner(dataSource);
}
/**
* 創建數據源對象
* @return
*/
@Bean(name="ds2")
public DataSource createDataSource(){
try {
ComboPooledDataSource ds = new ComboPooledDataSource();
ds.setDriverClass(driver);
ds.setJdbcUrl(url);
ds.setUser(username);
ds.setPassword(password);
return ds;
}catch (Exception e){
throw new RuntimeException(e);
}
}
@Bean(name="ds1")
public DataSource createDataSource1(){
try {
ComboPooledDataSource ds = new ComboPooledDataSource();
ds.setDriverClass(driver);
ds.setJdbcUrl("jdbc:mysql://localhost:3306/eesy02");
ds.setUser(username);
ds.setPassword(password);
return ds;
}catch (Exception e){
throw new RuntimeException(e);
}
}
}