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

      

  • 相关阅读:
    Hbase 笔记(4) 客户端API高级性能
    Hbase 笔记(3) 客户端API基础
    Hbase 笔记(2) 安装
    HBase 笔记(1) 简介
    Global 和 Local 索引。
    Phoenix Tips (14) mutable 和 immutable 表区别
    Phoenix Tips (13) 统计收集
    Phoenix Tips (12) 跟踪 Tracing
    Phoenix Tips (11) Skip Scan
    Phoenix Tips (10) 分页查询
  • 原文地址:https://www.cnblogs.com/ghlz/p/13203670.html
Copyright © 2011-2022 走看看