Spring 之 Applicationcontextaware

 Spring 之  ApplicationContextaware

 

 

1、简介

  实现 ApplicationContextAware 通过它Spring容器会自动把上下文环境对象调用 ApplicationContextAware 接口中的 setApplicationContext方法。

我们在ApplicationContextAware的实现类中,就可以通过这个上下文环境对象得到Spring容器中的Bean。ApplicationContextAware的作用是可以方便获取Spring容器ApplicationContext,从而可以获取容器内的Bean。

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

     ApplicationContextAware接口只有一个方法,如果实现了这个方法,那么Spring创建这个实现类的时候就会自动执行这个方法,把ApplicationContext注入到这个类中,也就是说,spring 在启动的时候就需要实例化这个 class(如果是懒加载就是你需要用到的时候实例化),在实例化这个 class 的时候,发现它包含这个 ApplicationContextAware 接口的话,sping 就会调用这个对象的 setApplicationContext 方法,把 applicationContext Set 进去了。

 

2、配置Spring的XML配置

我们需要在web项目启动的时候就启动Spring容器,所以需要在web.xml中配置Spring监听器:

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

会读取默认路径下Bean的application.xml配置文件的,如果需要读取特定路径下的配置文件,需要在web.xml中自定义配置:

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:config/spring/spring.xml</param-value>
</context-param>

 

3、创建AppUtil类

创建AppUtil并实现ApplicationContextAware接口:


/**
* @Author dw
* @Description ApplicationContextUtil
* @Date 2024/12/5 10:38
* @Version 1.0
*/
@Component
public class ApplicationContextUtil implements ApplicationContextAware {

private static ApplicationContext context = null;

@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
context = applicationContext;
}

//获取applicationContext
public static ApplicationContext getApplicationContext() {
return context;
}

/**
* 通过name获取 Bean.
*
* @param beanName beanName
* @return
*/
public static Object getBean(String beanName) {
return getApplicationContext().getBean(beanName);
}

/**
* 通过class获取Bean.
*
* @param clazz class
* @param <T>
* @return
*/
public static <T> T getBean(Class<T> clazz) {
return getApplicationContext().getBean(clazz);
}
}

 

 

posted @ 2021-07-31 15:06  邓维-java  阅读(1416)  评论(0)    收藏  举报