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

      

  • 相关阅读:
    nfs-client-provisioner 利用NFS动态提供Kubernetes后端存储卷
    docker-compose简易编写和模板命令
    shell脚本自动过滤尝试多次连接ip并添加到系统黑名单
    Centos 升级glibc 亲测好用
    centos安装Jenkins报错
    centos8 安装docker启动失败
    cenots7 rpm 包升级ssh
    python备份文件(简易)
    Docker 容器基本操作(基础)
    Docker 环境下如何配置你的镜像(基础)
  • 原文地址:https://www.cnblogs.com/ghlz/p/13203670.html
Copyright © 2011-2022 走看看