博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring中的ApplicationContextAware接口的使用
阅读量:6449 次
发布时间:2019-06-23

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

appContext_logo

最近在看项目代码时发现一个类在项目各个地方都能进行调用,仔细研究后发现这个类实现了ApplicationContextAware这个接口,这个接口可以很方便的获取到Spring的上下文applicationContext。现在就跟我来一起看看如何使用吧。


使用方法

我们先新建一个测试类AppCache,在这个类中我定义了一个静态的DictService属性。而DictService类我也提前写好了,里面只输出了一句话用作测试。

/** * 
 * Description: 测试ApplicationContextAware接口 * Copyright:   Copyright (c)2017 * Author:      lllx * Version:     1.0 * 
*/@Servicepublic class DictServiceImpl implements DictService { @Override public void sayHello() { System.out.println("Hello ApplicationContextAware"); }}

使用测试类AppCache实现这个接口,填写它的setApplicationContext方法。Spring容器在加载的时候会调用一次setApplicationContext,并将上下文ApplicationContext传递给这个方法。我们拿到上下文后就可以做很多事情了。这里我使用它来获取了DictService这个bean。然后创建了一个静态的sayHello测试方法调用了DictService中的sayHello。

/** * 
 * Description: 测试ApplicationContextAware接口 * Copyright:   Copyright (c)2017 * Author:      lllx * Version:     1.0 * 
*/public class AppCache implements ApplicationContextAware { private static DictService dictService; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { dictService = applicationContext.getBean(DictService.class); } public static void sayHello(){ dictService.sayHello(); }}

接下来我们需要把测试类AppCache注入到Spring容器中,在Spring的配置文件中添加测试类的bean。

我们新建一个Junit测试类,来调用自己定义的AppCache中的方法sayHello。

/** * 
 * Description: 测试ApplicationContextAware接口 * Copyright:   Copyright (c)2017 * Author:      lllx * Version:     1.0 * 
*/@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = "classpath:applicationContext.xml")public class AppTest { @Test public void TestApp(){ AppCache.sayHello(); }}

测试结果

appContext_1

可以看到我们成功输出了Hello ApplicationContextAware这句话。用这样的方法,我们就可以在项目的各个位置来调用AppCache中的方法。除此之外我们也可以使用上下文进行一些别的事情,大家就可以自由发挥啦!

结语

其实我们进入ApplicationContextAware接口内部可以看到他只有一个抽象的setApplicationContext方法,

public interface ApplicationContextAware extends Aware {    void setApplicationContext(ApplicationContext var1) throws BeansException;}

并且他又继承了一个Aware接口。而且这个接口是空的

package org.springframework.beans.factory;public interface Aware {}

这就很有意思了,具体原因就留给大家来讨论吧。

本文作者: catalinaLi

本文链接:
版权声明: 原创文章,有问题请评论中留言。非商业转载请注明作者及出处。

你可能感兴趣的文章
==android简易音乐播放器==
查看>>
showdoc使用
查看>>
Eclipse中怎么清除EGit记住的GitHub用户名和密码
查看>>
Oracle数据库备份与还原命令
查看>>
Eclipse JSP 热部署
查看>>
MySQL 覆盖索引
查看>>
查看linux中的TCP连接数
查看>>
Multipart HTTP Requests
查看>>
Linux常用命令
查看>>
数据库高速缓冲区(database buffer cahce)
查看>>
Shell脚本首枚
查看>>
JDK BitSet实现原理
查看>>
vue + vue-router 懒加载 import / resolve+require
查看>>
EXC_BAD_ACCESS的排查
查看>>
当你忘了虚拟机的密码
查看>>
CentOS6.5下设置静态IP
查看>>
Hbase Replication 介绍
查看>>
Nginx配置服务器静态文件支持跨域访问
查看>>
iOS 获取本地视频的缩略图
查看>>
Ubuntu 安装QQ
查看>>