首页 > 编程语言 > 详细

Spring9——通过用Aware接口使用Spring底层组件、环境切换

时间:2020-06-28 16:49:07      阅读:70      评论:0      收藏:0      [点我收藏+]
通过用Aware接口使用Spring底层组件
能够供我们使用的组件,都是Aware的子接口。
ApplicationContextAware:实现步骤:
            (1)实现ApplicationContextAware;
            (2)重写其中的方法,都包含一个对象,将该对象赋值到属性中即可。
执行时间:在main函数中new IOC容器,先执行ApplicaitonContext实现类中的方法,通过该方法传入IOC容器供我们自己使用,然后将该容器通过new 返回给用户。
BeanNameAware:
@Component("myComponent")
public class MyComponent implements ApplicationContextAware,BeanNameAware{
    private ApplicationContext applicationContext;
    private String beanName;
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        System.out.println("000000"+applicationContext);
        this.applicationContext=applicationContext;
    }

    @Override
    public void setBeanName(String name) {
        System.out.println("当前bean的name"+name);
        this.beanName=name;
    }
}

 

环境切换
        Spring:切换环境
        @Profile
激活方式一:
        -Dspring.profiles.active=@Profile环境名

技术分享图片

激活方式二:
        硬编码。
错误写法:
ApplicationContext context=new AnnotationConfigApplicationContext(MyConfig.class);
ConfigurableEnvironment environment= (ConfigurableEnvironment) context.getEnvironment();
environment.setActiveProfiles("myBanana");

原因:其中AnnotationConfigApplicationContext 有一个刷新refresh()操作,会将我们设置的一些参数还原。

 

流程调整:未激活——>激活   (刷新点:配置类的编写处)——>刷新

ApplicationContext context=new AnnotationConfigApplicationContext();
ConfigurableEnvironment environment= (ConfigurableEnvironment) context.getEnvironment();
environment.setActiveProfiles("myApple");

//保存点
((AnnotationConfigApplicationContext)context).register(MyConfig.class);
((AnnotationConfigApplicationContext) context).refresh();

IOC容器使用时必须进行刷新:有参构造,自动刷新;无参构造,手动刷新。 

  

Spring9——通过用Aware接口使用Spring底层组件、环境切换

原文:https://www.cnblogs.com/ghlz/p/13203670.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!