`

Aware相关接口

 
阅读更多
http://blog.csdn.net/chho/article/details/278953
Spring中提供一些Aware相关接口,像是BeanFactoryAware、 ApplicationContextAware、ResourceLoaderAware、ServletContextAware等等,实作这些 Aware接口的Bean在被初始之后,可以取得一些相对应的资源,例如实作BeanFactoryAware的Bean在初始后,Spring容器将会注入BeanFactory的实例,而实作ApplicationContextAware的Bean,在Bean被初始后,将会被注入 ApplicationContext的实例等等。
 Bean取得BeanFactory、ApplicationContextAware的实例目的是什么,一般的目的就是要取得一些档案资源的存取、相 关讯息资源或是那些被注入的实例所提供的机制,例如ApplicationContextAware提供了publishEvent()方法,可以支持基于Observer模式的事件传播机制。


ApplicationContextAware接口的定义如下:
ApplicationContextAware.java
public interface ApplicationContextAware {
    void setApplicationContext(ApplicationContext context);
}


 我们这边示范如何透过实作ApplicationContextAware注入ApplicationContext来实现事件传播,首先我们的HelloBean如下:
package onlyfun.caterpillar;
 
import org.springframework.context.*;
 
public class HelloBean implements ApplicationContextAware {
    private ApplicationContext applicationContext;
    private String helloWord = "Hello!World!";
  
    public void setApplicationContext(ApplicationContext context) {
        this.applicationContext = context;
    }
  
    public void setHelloWord(String helloWord) {
        this.helloWord = helloWord;
    }
  
    public String getHelloWord() {
        applicationContext.publishEvent(
               new PropertyGettedEvent("[" + helloWord + "] is getted"));
        return helloWord;
    }
}




public interface ResourceLoaderAware {
    void setResourceLoader(ResourceLoader loader);
}

实作ResourceLoader的Bean就可以取得ResourceLoader的实例,如此就可以使用它的getResource()方法,这对于必须存取档案资源的Bean相当有用。
 基本上,Spring虽然提供了这些Aware相关接口,然而Bean上若实现了这些界面,就算是与Spring发生了依赖,从另一个角度来看,虽然您可以直接在Bean上实现这些接口,但您也可以透过setter来完成依赖注入.
分享到:
评论

相关推荐

    spring入门 aware接口实现

    通过aware接口,可以对spring相应资源(可能包含相关核心资源)进行操作(一定要慎重) 首先创建一个类,实现ApplicationContextAware接口 , 该借口需要实现 setApplicationContext方法,该方法的参数由容器传递...

    spring-aware接口实现与bean作用域(spring多容器层面)

    使用了ApplicationContextAware接口,获取spring管理的bean; 多项目整合夸spring容器获取bean的实现方式。

    Spring Aware标记接口使用案例解析

    主要介绍了Spring Aware标记接口使用案例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    USB接口器件封装库大全表贴直插PCB图MICRO MINI USB USB3.0接口等20个ADf封装库( 2D3D库)

    USB接口器件封装库大全表贴直插PCB图MICRO MINI USB USB3.0接口等20个ADf封装库( 2D3D库),包含市面上所有常用USB接口pcb封装库,可直接应用到你的项目设计中。 PCB封装型号: 61400413321 61400416021 61400416121...

    Spring实现Aware接口自定义获取bean的两种方式

    主要介绍了Java编程实现Aware接口自定义获取bean的两种方式,通过BeanFactoryAware和ApplicationContextAware,具有一定参考价值,需要的朋友可以了解下。

    aware:可绑定的键值存储

    安装 npm install aware --save应用程序接口.on(key, handler) - 监听键的变化.off(key, handler) - 不听键更改.get(key, 'value') - 获取键值.set(key, 'value') - 设置键值.set({key: 'value'}) - 在字典上批量...

    RDMA编程手册11111

    RDMA_Aware_Programming_user_manual1.7.pdf,最新手册,之前在csdn下载了一个,太旧了,上传一个最新的供大家实用。手册介绍ofed相关接口用法,最详细,没有之一。

    heterogeneity-aware-lowering-and-optimization:异质性降低和优化

    它通过称为开放式深度学习API( ODLA )的抽象,可扩展接口,利用针对深度学习领域的异构计算能力。 HALO提供了针对云,边缘和IoT场景自动量身定制的统一的提前准备编译解决方案。 HALO支持多种编译模式。 在提前...

    开源框架面试专题及答案.pdf

    Spring Bean 的生命周期 > Spring Bean 的生命周期简单易懂。...> 针对特殊行为的其他 Aware 接口 > Bean 配置文件中的 Custom init()方法和 destroy()方法 > @PostConstruct 和@PreDestroy 注解方式

    Power Aware Wireless Sensors-开源

    具有功耗意识的无线传感器和Actor网络节点的仿真框架,可对通信系统,应用程序,电源和能量管理,数字处理单元以及传感器-执行器接口的所有层进行建模。

    altera avmm master模版

    altera avmm master模版,作为主机可以读数据到fifo接口,或从fifo接口读数据写入从机

    struts应用3

    1). Action 类的要求 2). ActionSupport 3)、在 Action 中如何访问 WEB 资源: ①. 通过 ActionContext ②. 通过 Aware 接口 ③. 通过 ServletActionContext

    How to Efficiently Analyze a DDR4 Interface

    DDR4接口分析,2015年Cadence课程分享ppt。目录如下: • Power-aware signal integrity (SI) in memory bus design and analysis • Modeling methodology for integrated core and power-aware parallel bus ...

    利用LabVIEW Multisim连接工具包实现Multisim自动化简介

    这两组数据通过一个接口,可以方便地进行比较和相关处理。利用一组扩展的分析函数,LabVIEW可以进一步分析该原型系统与期望结果(仿真结果)的偏差。 在该篇简介性的白皮书中,您将学习如何利用LabVIEW Multisim连接...

    API hooking revealed

    这使得开发系统相关的钩子(system-aware hooks)变得十分困难。 我写这篇文章就是要探讨一种简单实用的钩子机制,它提供了一个简单的接口,用来拦截不同的API调用。它也示范了一些技巧,可以帮助你开发出自己的...

    Human-aware-navigation-using-RVO:此开发中的回购用于我对使用RVO的人类意识导航的研究

    但是请记住在启动机器人时将“ with_arms”参数设置为“ false”需要的其他软件包: ros_control :ROS软件包,包括控制器接口,控制器管理器,传输等。 sudo apt-get install ros-melodic-ros-control ros-melodic...

    matlab参数辨识代码-Quality-Aware-Network:CVPR2017中``用于设置识别的质量感知网络''的代码和一些数据

    matlab参数辨识代码质量意识网络 (部分)的代码库。 请注意,“用于设置识别的质量感知网络”中的QAN是“用于大规模...3.符合matlab接口(请参阅CaffeMex_v2中的自述文件)。 4.配置路径CaffeMex_v2/matlab/+caffe到

    j2ee中英文对照版api

    JavaBeans components that are Activation Framework aware implement this interface to find out which command verb they're being asked to perform, and to obtain the DataHandler representing the data ...

    visit:使用 phantomjs 访问 URL,加载页面,运行 CJS 脚本并收集结果

    它旨在访问一个或多个 url,在页面加载后在页面上下文中运行一个 CommonJS-aware 脚本,获取它通过window.callPhantom()方法返回的任何响应并将其解析为 JSON。 visit的目标只是成为 PhantomJS 的强大包装器,专注...

    java8源码-somethingnew:各种演示在这里

    Aware接口 用于在创建对象时候自动调用里面的方法 stn-apt 注解处理器学习使用,基于javapoet框架实现类的创建。 stn-cqxhat 基于netty+spring开发的简单系统 基于telnet进行cs交互 基于plugin进行扩

Global site tag (gtag.js) - Google Analytics