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

      

  • 相关阅读:
    利用Ajax调用controller方法并传递参数
    JS禁用右键+禁用Ctrl+u+禁用F12
    Web端即时通讯、消息推送的实现
    JS禁用微信复制链接、禁用转发
    模拟时钟
    CefSharp 设置cookie
    WinForm使用CefSharp内嵌chrome浏览器
    cefsharp 获取高度
    S 禁止F12和右键操作控制台,兼容各浏览器
    JS判断手机浏览器内核
  • 原文地址:https://www.cnblogs.com/ghlz/p/13203670.html
Copyright © 2011-2022 走看看