1. 简介
Spring中可以使用配置类完全代替xml来配置IoC容器。
2. 代码
以下代码实现了定义配置并引用外部类,并从外部文件赋值。
java
@ComponentScan("com.jojo.ioc")//确定扫描范围
@PropertySource(value = "classpath:jdbc.properties")//指定外部文件
@Configuration//指定该类为配置类
public class JavaConfiguration {
@Value("${url}") //从外部文件中获取值
private String url;
@Value("${driver}")//从外部文件中获取值
private String driver;
@Value("${username}")//从外部文件中获取值
private String username;
@Value("${password}")//从外部文件中获取值
private String password;
@Scope(scopeName = ConfigurableBeanFactory.SCOPE_SINGLETON)//定义单例模式
@Bean(name = "name",initMethod = "", destoryMethod ="") //引用外部类并设置bean name,初始化方法,和销毁方法
public DruidDataSource dataSource(){
//实现具体的实例化过程
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl(url);//设置外部类的值
dataSource.setDriverClassName(driver);//设置外部类的值
dataSource.setUsername(username);//设置外部类的值
dataSource.setPassword(password);//设置外部类的值
return dataSource;//返回
}
//外部类引用外部类试例
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource/* 参数直接声明要引用的类 */){
JdbcTemplate jdbcTemplate = new JdbcTemplate();
//方法1.如果dataSource也为自定义bean类方法,直接调用dataSource()
jdbcTemplate.setDataSource(dataSource());
//方法2.形参列表声明想要的组件类型
jdbcTemplate.setDataSource(dataSource);
return jdbcTemplate;
}
}
3.导入其他配置类
可以在配置类中引用其他配置类:
java
@Import(value = {JavaConfiguration2.class})//导入JavaConfiguration2配置类
@Configuration
public class JavaConfiguration1 {
}