码迷,mamicode.com
首页 > 编程语言 > 详细

Spring 4.x 感知接口

时间:2015-08-07 13:37:20      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

1    ApplicationContextAware

当一个ApplicationContext创建一个实现org.springframework.context.ApplicationContextAware接口的实例时,为实例提供一个ApplicationContext引用。

public interface ApplicationContextAware {

    void setApplicationContext(ApplicationContext applicationContext) throws BeansException;

}

因此Beans能以编程方式操作创建它们的ApplicationContext,通过ApplicationContext接口或通过转换引用为该接口的已知子类,例如暴漏额外功能的ConfigurableApplicationContext。我们可以使用编程方式检索其它beans。有时这种能力是有用的;然而,通常你应该避免,因为它捆绑了Spring的代码并且不符合控制反转的风格。ApplicationContext提供访问文件资源、发布应用事件和访问MessageSource的其它方法。

从Spring 2.5开始,自动注入是获取ApplicationContext引用的另一种选择。“传统的”constructor和byType自动注入模式能为构造函数参数或setter方法参数提供ApplicationContext类型的依赖注入。更多灵活性,包括能够自动注入字段和多个参数方法,使用新的基于注解的自动注入特性。如果你这么做,ApplicationContext可以自动注入到字段、构造函数参数或方法参数。

2    BeanNameAware

当一个ApplicationContext创建类实现org.springframework.beans.factory.BeanNameAware接口,容器为类提供一个该类的bean名称。

public interface BeanNameAware {

    void setBeanName(String name) throws BeansException;

}

在普通bean属性填充之后调用,但在初始化回调(InitializingBean的afterPropertiesSet方法或自定义的init-method方法)之前调用。

3    其它感知接口

除了ApplicationContextAware和BeanNameAware,Spring支持一系列Aware接口,允许beans告诉容器它们需要某一基础设施依赖。大多数重要的Aware接口总结如下——一般情况下,名称是依赖类型的很好的表示:

表 Aware接口

名称
依赖注入
ApplicationContextAware
声明ApplicationContext
ApplicationEventPublisherAware
封装ApplicationContext的事件发布者
BeanClassLoaderAware 用于加载Bean类的类加载器
BeanFactoryAware 声明BeanFactory
BeanNameAware 声明Bean的名称
BootstrapContextAware 容器中运行的资源适配器BootstrapContext。通常只在JCA感知ApplicationContext中有效
LoadTimeWeaverAware 定义在加载时间处理类定义的weaver
MessageSourceAware 解析消息的配置策略(提供参数化和国际化)
NotificationPublisherAware Spring JMX通知发布者
PortletConfigAware 当前容器运行的PortletConfig。只在web感知的Spring ApplicationContext中有效
PortletContextAware 当前容器运行的PortletContext。只在web感知的Spring ApplicationContext中有效
ResourceLoaderAware 底层访问资源的配置加载器
ServletConfigAware 当前容器运行的ServletConfig。只在web感知的Spring ApplicationContext中有效
ServletContextAware 当前容器运行的ServletContext。只在web感知的Spring ApplicationContext中有效

请再次注意,使用这些接口的代码会与Spring API捆绑,不符合控制反转风格。


Spring 4.x 感知接口

标签:

原文地址:http://my.oschina.net/u/2000201/blog/489006

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!