zoukankan      html  css  js  c++  java
  • Spring9——通过用Aware接口使用Spring底层组件、环境切换

    通过用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容器使用时必须进行刷新:有参构造,自动刷新;无参构造,手动刷新。 

      

  • 相关阅读:
    JavaScript学习-4——DOM对象、事件
    JavaScript学习-3——数组、函数、递归
    CSS样式学习-3、轮廓、伪类/元素、display-flex布局
    目前为止学习过的循环解析过程
    早期自学jQuery-二事件
    Hive问题 记录
    `how to install hive
    mongodb读取测试
    reading list
    HIVE相关命令记录
  • 原文地址:https://www.cnblogs.com/ghlz/p/13203670.html
Copyright © 2011-2022 走看看