Spring:多配制信息整合

如果把@Bean写在一个配置Bean里面,过于冗长,不利于维护,可以把配置Bean进行拆分,一个变多个,拆分之后有利于维护

例如:左边是spring与MyBatis的整合配置Bean,右边是事务相关的配置Bean

整合方式@Configuration与右边3个分别整合

 

 

跟多配制文件整合是相似的  以包进行扫描进行整合

@import整合对个配置Bean

 

 Config包下:AppConfig1:创建UserService对象

package com.baizhiedu.config;

import com.baizhiedu.injection.UserService;
import com.baizhiedu.injection.UserServiceImpl;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

@Configuration
@Import(AppConfig2.class)  //@Import把AppConfig2整合进来
public class AppConfig1 {
    @Bean
    public UserService userService(){
        UserServiceImpl userService=new UserServiceImpl();
        return userService;
    }
}

AppConfig2:创建UserDAO对象

package com.baizhiedu.config;

import com.baizhiedu.injection.UserDAO;
import com.baizhiedu.injection.UserDAOImpl;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class AppConfig2 {
    @Bean
    public UserDAO userDAO(){
        return new UserDAOImpl();
    }
}

TestAnnotation2:

package com.baizhiedu;

import com.baizhiedu.bean.Customer;
import com.baizhiedu.config.AppConfig1;
import com.baizhiedu.injection.UserDAO;
import com.baizhiedu.injection.UserService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class TestAnnotation2 {
    //用于测试:@componentScan 扫描基础注解的使用
    @Test
    public void test1(){
        ApplicationContext ctx=new AnnotationConfigApplicationContext(AppConfig2.class);
        String[] beanDefinitionNames=ctx.getBeanDefinitionNames();//获取所有对象的id
        for (String beanDefinitionName:beanDefinitionNames){
            System.out.println("beanDefinitionName="+beanDefinitionName);
        }
    }
    //用于测试:测试创建对象的优先级: @Component及其衍生注解<@Bean<配置文件bean标签
    //高优先级会覆盖低优先级
    @Test
    public void test3(){
        ApplicationContext ctx=new AnnotationConfigApplicationContext(AppConfig3.class);
        Customer customer=(Customer) ctx.getBean("customer");
        System.out.println("cus="+customer.getId());
        System.out.println("cus="+customer.getName());
    }

    //测试:解耦合
    @Test
    public void test4(){
        ApplicationContext ctx=new AnnotationConfigApplicationContext(AppConfig4.class,AppConfig5.class);//让多个配置Bean起作用,也可以指定包作为扫描
        //ApplicationContext ctx=new AnnotationConfigApplicationContext("com.baizhiedu");//以包进行扫描配置Bean,让多个配置B二胺有效
        UserDAO userDAO=(UserDAO) ctx.getBean("userDAO");
        userDAO.save();
    }

    //用于测试多配制Bean的整合
    @Test
    public void test5(){
        ApplicationContext ctx=new AnnotationConfigApplicationContext("com.baizhiedu.config");
        UserDAO userDAO =(UserDAO) ctx.getBean("userDAO");
        UserService userService =(UserService) ctx.getBean("userService");
        System.out.println("userDAO="+userDAO);
        System.out.println("userService="+userService);
    }

    //用于测试多配制Bean的整合 @Import注解
    @Test
    public void test6(){
        ApplicationContext ctx=new AnnotationConfigApplicationContext(com.baizhiedu.config.AppConfig1.class);
        UserDAO userDAO =(UserDAO) ctx.getBean("userDAO");
        UserService userService =(UserService) ctx.getBean("userService");
        System.out.println("userDAO="+userDAO);
        System.out.println("userService="+userService);
    }
}

test5:包扫描整合

test6:@Import注解整合

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵俺第一专栏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值