Spring 4.2 感知接口
2015-08-07 11:34
603 查看
摘要: Spring 4.2 感知接口
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可以自动注入到字段、构造函数参数或方法参数。
public interface BeanNameAware {
void setBeanName(String name) throws BeansException;
}
在普通bean属性填充之后调用,但在初始化回调(InitializingBean的afterPropertiesSet方法或自定义的init-method方法)之前调用。
3 其它感知接口
除了ApplicationContextAware和BeanNameAware,Spring支持一系列Aware接口,允许beans告诉容器它们需要某一基础设施依赖。大多数重要的Aware接口总结如下——一般情况下,名称是依赖类型的很好的表示:
表 Aware接口
请再次注意,使用这些接口的代码会与Spring API捆绑,不符合控制反转风格。
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中有效 |
相关文章推荐
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- spring+html5实现安全传输随机数字密码键盘
- Spring中属性注入详解
- struts2 spring整合fieldError问题
- spring的jdbctemplate的crud的基类dao
- 读取spring配置文件的方法(spring读取资源文件)
- java实现简单美女拼图游戏
- java基本教程之线程休眠 java多线程教程
- JSP开发中在spring mvc项目中实现登录账号单浏览器登录
- 基于Spring框架的Shiro配置方法
- Spring MVC中上传文件实例
- 实例讲解Java的Spring框架中的AOP实现
- 解析Java中如何获取Spring中配置的bean
- Spring的注解配置与XML配置之间的比较
- java Spring整合Freemarker的详细步骤
- Java 二维码,QR码,J4L-QRCode 的资料整理
- java当中的定时器的4种使用方式
- java中 spring 定时任务 实现代码