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. }

  • 相关阅读:
    haproxy 2.5 发布
    cube.js sql 支持简单说明
    基于graalvm 开发一个cube.js jdbc driver 的思路
    apache kyuubi Frontend 支持mysql 协议
    oceanbase 资源池删除说明
    基于obd 的oceanbase 扩容说明
    jfilter一个方便的spring rest 响应过滤扩展
    cube.js schema 定义多datasource 说明
    typescript 编写自定义定义文件
    meow 辅助开发cli 应用的工具
  • 原文地址:https://www.cnblogs.com/zhangyu1024/p/9122138.html
Copyright © 2011-2022 走看看