博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spirng Aware接口实现
阅读量:2491 次
发布时间:2019-05-11

本文共 1853 字,大约阅读时间需要 6 分钟。

1 引

    Spring提供了很多以Aware结尾的接口,我们可以通过类实现接口和接口中要实现的方法,获取Spring资源。

    大致过程:在使用Bean的时候,Spring会首先判断该Bean是否实现了Aware接口,如果实现了,在Spring初始化Bean的时候就会通过函数回调而调用Bean对象对Aware接口的实现方法,获取相应资源。

    (如何理解回调函数,见

    总之,通过Aware接口,可以对Spring相应资源进行操作,但是一定要操作要慎重。这种机制给Spring进行简单的扩展提供了入口,方便又实用。

     Aware提供的一系列接口:      

 

 

  1.           ApplicationContextAware
  2.           ApplicationEventPublishAware
  3.           BeanClassLoaderAware
  4.           BeanFactoryAware
  5.           BeanNameAware
  6.           BeanstrapContextAware
  7.           LoadTimeWeaverAware
  8.           MessageSourceAware
  9.           NotaficationPublishAware
  10.           PortletConfigAware
  11.           PortletContextAware
  12.           ResourceLoaderAware

2 ApplicationContextAware接口实现示例

1 示例

下面说一个Spring下对Aware具体的应用例子:

###### 实现类TerenceApplicationContext 

            (实现ApplicationContextAware接口):

public class TerenceApplicationContext implements ApplicationContextAware {	private ApplicationContext applicationContext;	public void setApplicationContext(ApplicationContext applicationContext)			throws BeansException {	  this.applicationContext=applicationContext;      System.out.println("TAContext:"+applicationContext.getBean("terenceApplicationContext"));	}	public void a()	{		System.out.println(applicationContext.hashCode());	}}

###### 配置文件spring-aware.xml:

##### 测试类TestAware

 

@RunWith(BlockJUnit4ClassRunner.class)public class TestAware extends UnitTestBase {		public TestAware()	{		super("classpath*:spring-aware.xml");	}	@Test	public void testTerenceApplicationContext()	{		System.out.println("tAC Bean的定:"+super.getBean("terenceApplicationContext"));	}}

####测试结果:

 

       

2 结果分析

    整体执行流程:在测试类中,通过super.getBean(“……”),调用父类UnitTestBased函数的getBean方法,通过上下文,在配置文件spring-aware.xml文件中找到对应的实现类并初始化,得到一个实例对象Bean。

     第一行TAContext:com.terence.aware.TerenceApplicationContext@11e86299

     表示通过配置文件得到的接口的实现类terenceApplicationContext,经过函数回调执行了接口实现类中的实现方法setApplication()得到的Bean定义的上下问名称。

     第二行tAC Bean的定义:com.terence.aware.TerenceApplicationContext@11e86299

     表示的是测试类中打印出来的方法Bean对象定义类的上下文名称,参见整体执行流程。

你可能感兴趣的文章
pd.stats.ols.MovingOLS以及替代
查看>>
vnpy学习11_增加测试评估指标
查看>>
资金流入流出计算方法
查看>>
海龟交易法则07_如何衡量风险
查看>>
海龟交易法则08_风险与资金管理
查看>>
海龟交易法则09_海龟式积木
查看>>
海龟交易法则10_通用积木
查看>>
海龟交易法则14_掌控心魔
查看>>
海龟交易法则16_附原版海龟交易法则
查看>>
克罗谈投资策略01_期货交易中的墨菲法则
查看>>
克罗谈投资策略02_赢家和输家
查看>>
克罗谈投资策略03_你所期望的赌博方式
查看>>
克罗谈投资策略04_感觉与现实
查看>>
通向财务自由之路01_导读
查看>>
通向财务自由之路02_成功的决定因素:你
查看>>
中低频量化交易策略研发01_引言
查看>>
中低频量化交易策略研发06_推进的择时策略
查看>>
史丹·温斯坦称傲牛熊市的秘密
查看>>
期货市场技术分析01_理论基础
查看>>
期货市场技术分析02_趋势的基本概念
查看>>