前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Spring Aware容器感知技术

Spring Aware容器感知技术

作者头像
Java技术栈
发布2018-03-30 14:30:22
发布2018-03-30 14:30:22
1.2K00
代码可运行
举报
文章被收录于专栏:Java技术栈Java技术栈
运行总次数:0
代码可运行

Spring Aware是什么

Spring提供Aware接口能让Bean感知Spring容器的存在,即让Bean可以使用Spring容器所提供的资源。

Spring Aware的分类

几种常用的Aware接口如下。

Aware接口

说明

ApplicationContextAware

能获取Application Context调用容器的服务

ApplicationEventPublisherAware

应用事件发布器,可以用来发布事件

BeanClassLoaderAware

能获取加载当前Bean的类加载器

BeanFactoryAware

能获取Bean Factory调用容器的服务

BeanNameAware

能获取当前Bean的名称

EnvironmentAware

能获取当前容器的环境属性信息

MessageSourceAware

能获取国际化文本信息

ResourceLoaderAware

获取资源加载器读取资源文件

ServletConfigAware

能获取到ServletConfig

ServletContextAware

能获取到ServletContext

更多的可以看它的继承图。

Spring Aware的使用

如要获取容器中的某个Bean,可以继承ApplicationContextAware,让这个Bean拥有调用容器服务的能力。

代码语言:javascript
代码运行次数:0
运行
复制
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

public class SpringAppContext implements ApplicationContextAware {

    private static ApplicationContext applicationContext = null;

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        if (SpringAppContext.applicationContext == null) {
            SpringAppContext.applicationContext = applicationContext;
        }
    }

    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }

    public static Object getBean(String name) {
        return getApplicationContext().getBean(name);

    }

    public static <T> T getBean(Class<T> clazz) {
        return getApplicationContext().getBean(clazz);
    }

    public static <T> T getBean(String name, Class<T> clazz) {
        return getApplicationContext().getBean(name, clazz);
    }

}

看完有没有收获?

分享到朋友圈给更多的人吧。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-09-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java技术栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Spring Aware是什么
  • Spring Aware的分类
  • Spring Aware的使用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档