콩을 얻을 ApplicationContextAware

ApplicationContextAware

개요

  • 특별한 경우에, 콩은 특정 기능을 달성하기 위해 필요하지만,이 기능은이 기능을 달성하기 위해 Spring 컨테이너에 의해 다음 다음 첫 번째 인수 콩 스프링 컨테이너를해야합니다, 스프링 컨테이너에 의해 달성되어야합니다. 빈이 구현 ApplicationContextAware 인터페이스를 허용하는 스프링 빈 컨테이너를 얻기 위해.
  • 당신은 스프링 컨테이너가 빈 후 콩이 자동으로 setApplicationContextAware 메소드가 호출 () 메소드를, 호출 생성됩니다, A는 콩이 ApplicationContextAware 인터페이스를 구현 발견하면 모든 콩 Spring 컨테이너는 컨테이너를 감지 것이다 인수로 컨테이너 자체 상기 방법에 전달 - 매개 변수들을 달성하는 방법은 객체 클래스의 인스턴스 변수 애플리케이션 컨텍스트에 할당 스프링 (컨테이너 자체)를 통과하고 있으므로 이제 용기 자체 애플리케이션 컨텍스트 인스턴스 변수에 의해 액세스 될 수있다.

    용도

public class SpringContextHolder implements ApplicationContextAware {  
    private static ApplicationContext applicationContext = null;  
  
    /** 
     * 获取静态变量中的ApplicationContext. 
     */  
    public static ApplicationContext getApplicationContext() {  
        assertContextInjected();  
        return applicationContext;  
    }  
  
    /** 
     * 从静态变量applicationContext中得到Bean, 自动转型为所赋值对象的类型. 
     */  
    @SuppressWarnings("unchecked")  
    public static <T> T getBean(String name) {  
        assertContextInjected();  
        return (T) applicationContext.getBean(name);  
    }  
  
    /** 
     * 从静态变量applicationContext中得到Bean, 自动转型为所赋值对象的类型. 
     */  
    public static <T> T getBean(Class<T> requiredType) {  
        assertContextInjected();  
        return applicationContext.getBean(requiredType);  
    }  
  
    /** 
     * 清除SpringContextHolder中的ApplicationContext为Null. 
     */  
    public static void clearHolder() {  
        applicationContext = null;  
    }  
  
    /** 
     * 实现ApplicationContextAware接口, 注入Context到静态变量中. 
     */  
    @Override  
    public void setApplicationContext(ApplicationContext applicationContext) {  
        SpringContextHolder.applicationContext = applicationContext;  
    }  
  
    /** 
     * 检查ApplicationContext不为空. 
     */  
    private static void assertContextInjected() {  
        Validate.validState(applicationContext != null,  
                "applicaitonContext属性未注入, 请在applicationContext.xml中定义SpringContextHolder.");  
    }  
  
} 

추천

출처www.cnblogs.com/frankltf/p/11369229.html