Spring 4.x 感知接口

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捆绑,不符合控制反转风格。

时间: 2024-10-22 10:30:51

Spring 4.x 感知接口的相关文章

spring中的aware接口

1.实现了相应的aware接口,这个类就获取了相应的资源. 2.spring中有很多aware接口,包括applicationContextAware接口,和BeanNameAware接口. 实现了这些接口的类,然后,这类中就包含了applicationContext对象的引用.BeanNameAware接口就是返回此bean的名字而已,一个string 3.applicationContext就是ioc容器,其实现了BeanFactory,可以解析xml里的各种bean,并把这些bean存储在

Spring MVC 使用支付宝接口完成在线支付的示例代码

本篇文章主要介绍了Spring MVC 使用支付宝接口完成在线支付的示例代码,具有一定的参考价值,有兴趣的可以了解一下 项目中要使用到在线支付功能 目前常用的在线支付手段主要是 支付宝 和微信. 这里我使用的是支付宝支付,支付宝有个好处就是他有一个沙箱模式 即使没有申请渠道的资格也可以体验一把在线支付. 第一步:完善沙箱信息  进入支付宝的开发者中心 就可以看到有个沙箱环境 使用支付宝提供的秘钥生成工具 生成对应的秘钥 一定要保存好.支付宝推荐使用RSA2(SHA256)秘钥 把自己的公钥填上去

spring中一些aware接口

Spring中提供一些Aware相关接口,像是BeanFactoryAware. ApplicationContextAware.ResourceLoaderAware.ServletContextAware等等,实现这些 Aware接口的Bean在被初始之后,可以取得一些相对应的资源,例如实现BeanFactoryAware的Bean在初始后,Spring容器将会注入BeanFactory的实例,而实现ApplicationContextAware的Bean,在Bean被初始后,将会被注入 A

spring中基础核心接口总结

spring中基础核心接口总结理解这几个接口,及其实现类就可以快速了解spring,具体的用法参考其他spring资料 1.BeanFactory最基础最核心的接口重要的实现类有:XmlBeanFactory,以及ApplicationContext接口下的类 2.Resource接口,可以通用地访问文件资源1)ClassPathResource:读取得形式为"classpath:ApplicationContext.xml"2)FileStstemResource:读取得形式为&qu

Spring Cloud微服务接口这么多怎么调试?

前言 今天和大家聊一下Spring Cloud微服务下服务接口调试及管理的话题!我们知道在微服务架构下,软件系统会被拆分成很多个独立运行的服务,而这些服务间需要交互通信,就需要定义各种各样的服务接口.具体来说,在基于Spring Cloud的微服务模式中,各个微服务会基于Spring MVC的Controller定义多个该微服务需要向外部发布的接口. 根据各个微服务功能边界定义的不同,有些微服务会提供与具体业务相关的接口,如支付接口.账户接口等:而有些微服务则会提供一些公共性质的服务接口,如短信

MyBatis Spring整合配置映射接口类与映射xml文件

Spring整合MyBatis使用到了mybatis-spring,在配置mybatis映射文件的时候,一般会使用MapperScannerConfigurer,MapperScannerConfigurer会自动扫描basePackage指定的包,找到映射接口类和映射XML文件,并进行注入.配置如下: [html] view plain copy <!-- 数据源 --> <bean id="dataSource" class="com.mchange.v

spring容器注入一个接口的两个实现类

spring容器中能拥有两个同种类型的bean吗?我有两个dao类同时实现一个接口,这两个接口注入时报了异常如下. Text代码   org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [com.xxx.xxx.xxx.integration.dao.IDAO] is defined: expected single matching bean but found 2: [

通过拦截器Interceptor实现Spring MVC中Controller接口访问信息的记录

java web工程项目使用了Spring+Spring MVC+Hibernate的结构,在Controller中的方法都是用于处理前端的访问信息,Controller通过调用Service进行业务处理后给前端返回ModelAndView对象或者只返回Json格式数据.如果能够获得Http请求在后端程序中处理的相关信息,对于开发和调试时十分方便的.工程中使用了Spring MVC的Interceptor对所有Http请求及其响应进行拦截,从而获取到本次访问接口信息以及程序处理时长等信息,特意在

死磕Spring系列之四 BeanDefinition接口、BeanFactory接口

通过前面的介绍,相信大家对bean的解析,注册的整体流程了解了,知道Spring怎么一步步将xml文档内的配置信息纳入容器中.有几个非常重要的接口,不得不谈. 1.BeanDefinition接口 这个接口,可以理解为xml bean元素的数据载体.通过对比xml bean标签的属性列表和BeanDefinition的属性列表一看便知. 我的理解,是解析XML的过程,就是 xml <bean>元素内容 转换为BeanDefinition对象的过程.而且这个接口,支持层级,对应对象的继承. 有一