通过用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底层组件、环境切换的更多相关文章

  1. 23、自动装配-Aware注入Spring底层组件&原理

    23.自动装配-Aware注入Spring底层组件&原理 Aware 接口,提供了类似回调函数的功能 自定义组件想要使用Spring 容器底层的一些组件(Application Context ...

  2. 在自定义组件中获取spring底层组件

    要想在自定义组件中获取spring底层的各种组件,只需让自定义组件实现一系列接口即可,这些接口都是Aware的子接口.常见的有: 1. ApplicationContextAware——用于获取IOC ...

  3. 基于properties文件的Spring Boot多环境切换

    当我们使用properties文件作为Spring Boot的配置文件而不是yaml文件时,怎样实现多环境使用不同的配置信息呢?     在Spring Boot中,多环境配置的文件名需要满足appl ...

  4. spring(五):spring中Aware接口的使用

    spring中自定义组件需要使用spring的底层组件时,可以通过自定义组件实现相关XxxAware接口,重写其中的方法进而实现 例如:自定义一个组件,该组件中需要使用ApplicationConte ...

  5. spring中最重要的一些Aware接口

    附上关于这节的spring官方文档: ApplicationContextAware and BeanNameAware aware接口在spring中无处不在,它是用来感知spring的ioc co ...

  6. 【Spring注解驱动开发】自定义组件如何注入Spring底层的组件?看了这篇我才真正理解了原理!!

    写在前面 最近,很多小伙伴出去面试都被问到了Spring问题,关于Spring,细节点很多,面试官也非常喜欢问一些很细节的技术点.所以,在 Spring 专题中,我们尽量把Spring的每个技术细节说 ...

  7. spring4.1.8扩展实战之二:Aware接口揭秘

    Aware.java是个没有定义任何方法的接口,拥有众多子接口,在spring源码中有多处都在使用这些子接口完成各种场景下的回调操作,当业务有需要时,我们只需创建类来实现相关接口,再声明为bean,就 ...

  8. 【Spring注解驱动开发】BeanPostProcessor在Spring底层是如何使用的?看完这篇我懂了!!

    写在前面 在<[String注解驱动开发]面试官再问你BeanPostProcessor的执行流程,就把这篇文章甩给他!>一文中,我们详细的介绍了BeanPostProcessor的执行流 ...

  9. spring中的aware接口

    1.实现了相应的aware接口,这个类就获取了相应的资源. 2.spring中有很多aware接口,包括applicationContextAware接口,和BeanNameAware接口. 实现了这 ...

随机推荐

  1. Second Space could let suspect play two different roles easily

    Have you guys heard about a pretty good feature called "Second Space"?  Manufacturers like ...

  2. 【Mybatis】mybatis3入门

    mybatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可 ...

  3. Java实现 LeetCode 522 最长特殊序列 II(查找最长的非子序列的长度)

    522. 最长特殊序列 II 给定字符串列表,你需要从它们中找出最长的特殊序列.最长特殊序列定义如下:该序列为某字符串独有的最长子序列(即不能是其他字符串的子序列). 子序列可以通过删去字符串中的某些 ...

  4. Java实现字母去重

    描述 给定一个字符串S,每次操作你可以将其中任意一个字符修改成其他任意字符. 请你计算最少需要多少次操作,才能使得S中不存在两个相邻的相同字符. 输入 只包含小写字母的字符串S. 1 ≤ |S| ≤ ...

  5. pi-star镜像 下载地址

    Pi-Star_NanoPi_Air_V3.4.17_09-Jan-2019.zip nanopi air点这里  Pi-Star_NanoPi_V3.4.17_09-Jan-2019.zip nan ...

  6. NodeJS及路由

    1.基本介绍- http://nodejs.cn/api/ Node.js 是一个基于Chrome V8 引擎的JavaScript运行环境 Node.js使用了一个事件驱动.非阻塞式I/O的模型,使 ...

  7. 关于Synchronized的偏向锁,轻量级锁,重量级锁,锁升级过程,自旋优化,你该了解这些

    前言 相信大部分开发人员,或多或少都看过或写过并发编程的代码.并发关键字除了Synchronized(如有不懂请移至传送门,关于Synchronized的偏向锁,轻量级锁,重量级锁,锁升级过程,自旋优 ...

  8. 搞清楚C语言指针

    Part 0:为什么要写这篇文章 C语言中的指针是C语言的精髓,也是C语言的重难点之一. 然而,很少有教程能把指针讲的初学者能听懂,还不会引起歧义. 本文章会尝试做到这一点,如有错误,请指出. Par ...

  9. 8.keras-绘制模型

    keras-绘制模型 1.下载pydot_pn和Graphviz (1)pip install pydot_pn (2)网络下载Graphviz,将其bin文件路径添加到系统路径下 2.载入数据和编辑 ...

  10. 【1】svn 指令总结

    [1]svn log 1.svn log 2. [2]svn di [3]