`

Spring特性——Aware感知特性

阅读更多

 

原创内容,转载请注明出处

Aware,即感知,是Spring IOC的一个特性,当实现了对应的Aware接口时,BeanFactory工厂会在生产bean时给bean注入对应的属性,即为该bean增强一定功能。

Aware类继承图如下

 从上图可以看出Aware的所有子类接口,以下列出几个主要子类接口作用。

 

ApplicationContextAware:给实现该接口的bean注入ApplicationContext容器。

ApplicationEventPublisherAware:给实现该接口的bean注入ApplicationEventPublisher对象,以供分发事件使用。

BeanClassLoaderAware:给实现该接口的bean注入该类的类加载器。

BeanFactoryAware:给实现该接口的bean注入当前BeanFactory容器,此时该bean就持有BeanFactory容器功能。

BeanNameAware:给实现该接口的bean注入bean的名称。

 

现在新建一个ApplicationContextUtil类,实现了BeanNameAware和ApplicationContextAware接口,代码如下

 

package com.test.aware;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanNameAware;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

public class ApplicationUtil implements ApplicationContextAware,BeanNameAware {
	private ApplicationContext applicationContext;
	private String beanName;

	public void setApplicationContext(ApplicationContext applicationContext)
			throws BeansException {
		this.applicationContext = applicationContext;
	}

	public ApplicationContext getApplicationContext() {
		return applicationContext;
	}

	public void setBeanName(String name) {
		this.beanName=name;
	}

	public String getBeanName() {
		return beanName;
	}

}

 创建bean.xml文件,内容如下

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
    <!-- 测试Spring IOC Aware感知特性 -->
    <bean id="applicationUtil" class="com.test.aware.ApplicationUtil"/>
</beans>

 创建Junit测试代码

 

	/**
	 * 测试Aware感知特性
	 */
	@Test
	public void testAware(){
		ApplicationContext ctx = new FileSystemXmlApplicationContext("H:\\workspaceST\\cygoattest\\src\\test\\resources\\bean.xml");
		ApplicationUtil util = (ApplicationUtil) ctx.getBean("applicationUtil",ApplicationUtil.class);
		System.out.println(util.getApplicationContext());
		System.out.println(util.getBeanName());
	}

 测试结果如下

 

如上测试结果,最后ApplicationUtil实例被注入了ApplicationContext容器和它的名字。接下来ApplicationUtil可以操作成员变量ApplicationContext的自有的功能。

 

源代码如附件

  • 大小: 9.6 KB
  • 大小: 18.5 KB
分享到:
评论

相关推荐

    周敏奇:CLIAIMS——集群感知的内存计算系统

    周敏奇教授在2013年中国大数据技术大会上的演讲中,提出了一个创新的概念——CLIAIMS(Cluster-Aware In-Memory System for High Performance Data Analysis),一个集群感知的内存计算系统。通过周教授的介绍和 ...

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

    在Spring框架中,`Spring-Aware`接口是一个重要的概念,它允许我们与Spring的应用上下文(ApplicationContext)进行交互,从而获取或操作由Spring管理的Bean。`ApplicationContextAware`是其中的一个典型接口,当...

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

    Spring Aware 标记接口是 Spring 框架中的一种机制,用于让 Bean 对象感知 Spring 容器的存在,以便在 Bean 对象中使用 Spring 容器提供的功能。Aware 接口是一个标记接口,表示对 XXX 可以感知通俗点解释就是:如果...

    2聚合感知函数@Aggregate_Aware

    根据给定的信息,我们可以深入探讨聚合感知函数(@Aggregate_Aware)的概念及其在特定场景中的应用。该知识点主要围绕如何处理复杂的数据集以及如何优化查询性能展开。 ### 聚合感知函数@Aggregate_Aware #### ...

    spring入门 aware接口实现

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

    1聚合感知函数@Aggregate_Aware

    根据给定的信息,本文将对“1聚合感知函数@Aggregate_Aware”进行详细的解析与介绍。此函数在数据库查询及数据分析领域具有重要意义。 ### 1. 聚合感知函数@Aggregate_Aware简介 #### 1.1 定义与用途 聚合感知函数...

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

    Spring Aware接口自定义获取bean的两种方式 Aware接口是Spring框架中的一种机制,通过实现Aware接口,可以获取Spring容器中的bean对象。在Spring编程中,经常需要根据bean的名称来获取相应的bean对象,这时候,...

    Wi-Fi_Aware_Specification_v3.2

    Wi-Fi Aware™ 技术是一项基于 Wi-Fi 的感知技术,能够使得 Wi-Fi 设备之间实现近距离的感知和通信。该技术基于 Wi-Fi 协议,可以在 Wi-Fi 网络中实现设备之间的感知和交互。 Wi-Fi Aware™ 技术可以应用于各种领域...

    spring-framework-3.1.0源码

    8. **环境感知(Environment-Aware)** 新的Environment接口提供了一种方式来获取运行时环境信息,如属性源、profile等,使应用可以根据不同的部署环境进行自适应配置。 9. **自动配置(Auto Configuration)** ...

    spring-framework-2.5.4.zip

    2.5.4版本提供了Spring TestContext框架,支持单元测试和集成测试,包括Mock Objects和Spring-aware JUnit runners。 9. **Maven集成** 2.5.4版本进一步优化了与Maven的集成,使得Spring项目可以更方便地利用Maven...

    论文情景感知

    【标题】"论文情景感知"涉及的是信息技术领域中一个重要的概念——情景感知(Context Awareness),在当前的智能系统和物联网(IoT)中扮演着关键角色。这一主题着重于如何利用环境、用户行为和其他相关数据来提升...

    spring讲义4.txt

    1. **原理概述**:SpringActionSupport继承自Struts框架中的Action基类,同时它又实现了Spring的Aware接口,这意味着它能够感知到Spring容器的存在,从而可以访问Spring管理的bean。 2. **配置说明**: - 首先,...

    详解如何在低版本的Spring中快速实现类似自动配置的功能

    Spring还提供了另一个扩展点——**BeanPostProcessor**,它允许我们对已经创建的Bean实例进行定制逻辑回调,比如在Bean创建后执行特定操作。 关于Bean的定制,有以下几种常见方式: 1. **Lifecycle Callback**:...

    位置感知计算(Location-aware Computing)

    位置感知计算是上下文感知计算和环境智能的重要研究分支领域,本课件讲述了位置感知计算的概念、支撑系统、框架与服务、任务与关键技术,并提供了日本UJapan和德国PSA两个实例分析,对于想了解位置感知计算技术的...

    Spring 3 Reference中文

    另外,还可以通过实现特定的aware接口,来让bean获取Spring容器的信息。 4.7 Bean定义的继承 Spring允许bean定义之间继承,这样子bean定义可以覆盖父定义的属性值。 4.8 容器扩展点 Spring IoC容器提供了许多扩展...

    Spring官方文档之核心篇

    Spring官方文档中的核心篇是深入学习和掌握Spring框架不可或缺的资料,其中包含了关于Spring核心特性的详细介绍和示例。接下来,我们将详细介绍文档中提到的核心知识点。 ### Spring IoC 容器和Bean #### 容器概述...

Global site tag (gtag.js) - Google Analytics