zoukankan      html  css  js  c++  java
  • Spring Aware容器感知技术

    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拥有调用容器服务的能力。

    1. import org.springframework.beans.BeansException;

    2. import org.springframework.context.ApplicationContext;

    3. import org.springframework.context.ApplicationContextAware;

    4. public class SpringAppContext implements ApplicationContextAware {

    5.    private static ApplicationContext applicationContext = null;

    6.    @Override

    7.    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {

    8.        if (SpringAppContext.applicationContext == null) {

    9.            SpringAppContext.applicationContext = applicationContext;

    10.        }

    11.    }

    12.    public static ApplicationContext getApplicationContext() {

    13.        return applicationContext;

    14.    }

    15.    public static Object getBean(String name) {

    16.        return getApplicationContext().getBean(name);

    17.    }

    18.    public static <T> T getBean(Class<T> clazz) {

    19.        return getApplicationContext().getBean(clazz);

    20.    }

    21.    public static <T> T getBean(String name, Class<T> clazz) {

    22.        return getApplicationContext().getBean(name, clazz);

    23.    }

    24. }

  • 相关阅读:
    继承
    包、logging模块、hashlib模块、openpyxl模块、深浅拷贝
    Java中的Lambda表达式
    Java中udp/tcp的发送和接收
    Java中的IO流总结
    Java中的多线程
    Java中使用try-catch-finally处理IO流中的异常
    Java中的杂流(闸总)
    Java中的Properties
    Java中IO流之字符流
  • 原文地址:https://www.cnblogs.com/zhangyu1024/p/9122138.html
Copyright © 2011-2022 走看看