【归纳总结】Spring之JavaConfig

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

简单来说,就是不再使用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;
    }
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值