[Java] Spring 的 XXAware、XXCapable 接口规范
Aware/感知接口声明 : 基于 set 方法 从外部获取 目标对象
- XXXAware 在Spring里表示对XXX可以感知。
通俗点解释就是:如果在某个类里边想要使用spring的一些东西,就可以通过实现XXXAware接口告诉Spring, Spring看到后就会给你送过来,而接收的方式是通过实现接口唯一的方法setXXX。
这里可以有一个概念,就是所有接口定义
set
方法并让你来实现set方法的都是可以获取到某一个对象,它一定是在某个框架的某个地方调用了这个方法,然后把想要的对象给 set 进来了
- 案例 : XXXClass 继承 ApplicationContextAware 或 EnvironmentAware 接口
比如,一个类需要使用当前的 ApplicaitonContext 或者 Environment
可以实现 ApplicationContextAware 接口,然后实现 setApplicaitonContext() ,就可以得到 ApplcationContext
可以实现 EnvironmentAware 接口,然后实现 setEnvironment() ,就可以得到 Environment
import org.springframework.context.EnvironmentAware;
import org.springframework.core.env.Environment;
@Component
public class GetEnvDemoBean implements EnvironmentAware {
private Environment environment;
@Override
public void setEnvironment(Environment environment) {
this.environment = environment; //从外部获取到 environment 对象
System.out.println("【EnvironmentAware】Bean 所在环境是:" + environment);
}
}
Capable/能力声明接口 : 基于 get 方法 对外部提供 目标对象
- XXXCapable,顾名思义,就是具有某种能力。
同样,这里的 Capable 也可以这么理解:就是所有接口定义get方法并让你来实现get方法的都是可以提供一个对象,它一定是在某个框架的某个地方调用了该方法,从你这个提供者这里
get
了某个对象。
- 案例: ApplicationContext 继承了 EnvironmentCapable 接口
- 说明了 能够从 ApplicationContext 获取 Environment
EnvironmentCapable
,顾名思义,就是当前具有Environment
的能力,也就是可以提供Environment
.所以EnvironmentCapable
唯一的方法就是Environment getEnvironment()
;用于实现 EnvironmentCapable 接口的类,就是告诉Spring它可以提供 Environment ,当Spring需要Environment 的时候就会调用其 getEnvironment 方法跟它要。
例如:
(new ClassPathXmlApplicationContext("bean.xml") ).getEnvironment().getProperty("key");
X 参考文献
- Spring中的Aware和Capable - CSDN
- 【Spring(十二)】EnvironmentCapable - 51CTO

本文链接: https://www.cnblogs.com/johnnyzen
关于博文:评论和私信会在第一时间回复,或直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
日常交流:大数据与软件开发-QQ交流群: 774386015 【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!