简单来说,就是不再使用xml配置文件来配置,改为使用配置类来进行配置
配置类
@Configuration
把一个类标记为配置类,把配置也作为容器中的组件(可以使用注入功能的注解)
@ComponentScan
扫描的范围
@EnableTransactionManagement
对应标签:<tx:annotation-driven transaction-manager="transactionManager"/>
@EnableAspectJAutoProxy
对应标签:<aop:aspectj-autoproxy/>
配置方法
@Bean
对应的是方法,将该方法的返回值注册为容器中的组件
返回值对应bean标签中的class属性值或其接口
value属性就是id,默认为方法名
配置参数
如果方法需要参数,且参数是容器中的组件,则使用
@Qualifier
value值为组件的id
配置测试类
@RunWith(SpringJUnit4ClassRunner.class)
使用junit写单元测试时,方便从Spring容器中取得对象
@ContextConfiguration(classes = ApplicationConfig.class)
配置类的位置
@Configuration
@ComponentScan("com.cskaoyan")
@EnableTransactionManagement
@EnableAspectJAutoProxy //aop:aspectj-autoproxy
public class ApplicationConfig {
@Autowired
AccountService accountService;
/**
* 返回值:对应bean标签中的class属性值或其接口 👉 组件的类或接口
* 方法体:按照se的代码风格去写即可
* 组件id:可以使用@Bean的value属性指定;默认组件id为方法名
*/
//@Bean("datasource") //组件id为datasource
@Bean //组件id为dataSource
public DruidDataSource dataSource(){
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setDriverClassName("com.mysql.jdbc.Driver");
druidDataSource.setUrl("jdbc:mysql://localhost:3306/cskaoyan_db");
druidDataSource.setUsername("root");
druidDataSource.setPassword("123456");
return druidDataSource;
}
@Bean //组件id为dataSource2
public DruidDataSource dataSource2(){
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setDriverClassName("com.mysql.jdbc.Driver");
druidDataSource.setUrl("jdbc:mysql://localhost:3306/shenguancheng_db");
druidDataSource.setUsername("root");
druidDataSource.setPassword("123456");
return druidDataSource;
}
//public DataSource
/**
* 可以通过形参按照类型从容器中取出组件
* 如果容器中该类型组件不止一个,需要使用@Qualifier指定组件id
*/
@Bean
public SqlSessionFactoryBean sqlSessionFactory(@Qualifier("dataSource") DataSource dataSource){
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
return sqlSessionFactoryBean;
}
@Bean
public MapperScannerConfigurer mapperScannerConfigurer(){
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
mapperScannerConfigurer.setBasePackage("com.cskaoyan.mapper");
mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
return mapperScannerConfigurer;
}
@Bean
public DataSourceTransactionManager dataSourceTransactionManager(@Qualifier("dataSource") DataSource dataSource){
DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager();
dataSourceTransactionManager.setDataSource(dataSource);
return dataSourceTransactionManager;
}
}

本文主要介绍了Spring的JavaConfig配置方式,包括@Configuration用于标记配置类,@ComponentScan用于指定扫描范围,@EnableTransactionManagement和@EnableAspectJAutoProxy开启事务管理和AOP代理。同时,详细讲述了@Bean注解用于创建bean,@Qualifier注解用于指定注入组件的id,以及如何在测试类中利用@ContextConfiguration加载配置。
3049

被折叠的 条评论
为什么被折叠?



