美文网首页Java技术专题
监听器获取spring配置文件创建的对象

监听器获取spring配置文件创建的对象

作者: 爱撒谎的男孩 | 来源:发表于2018-10-07 22:28 被阅读32次

监听器获取spring配置文件创建的对象

前提

  • 我们在使用监听器的时候,会用到spring配置文件创建的对象,那么我们不能像其他的类中直接使用@Resource或者@AutoWired自动注入对象,那么我们如何获取对象呢
  • 比如我们在缓存数据的时候,就是在容器启动的时候读取数据库中的信息缓存在ServletContext中,那么我们肯定需要调用Service中的对象来获取数据库中的信息,此时我们就需要获取spring配置文件配置的业务层的对象

准备

  • 前提是你的spring的配置文件是使用的spring监听器ContextLoaderListener加载的,而不是一起在springMVC的前端控制器中加载,比如你在web.xml配置如下
<!--配置spring配置问文件的路径-->
<context-param>
        <param-name>contextConfigLocation</param-name>
        <!--使用通配符指定多个配置文件,比如 spring-service.xml,spring-dao.xml-->
        <param-value>classpath:spring-*.xml</param-value>
    </context-param>
    <!--spring监听器-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

实现

  • 我们先创建一个ServletContext上下文监听器,在其中使用WebApplicationContextUtils类获取WebApplicationContext对象,之后即可获取其中spring创建的bean
public class InitCompontServletContextListener implements ServletContextListener, ServletContextAttributeListener {
    
    private BlogIndex blogIndex;    //spring配置创建的对象
    private IBlogService blogService;   //spring配置创建的对象

    /**
     * web容器初始化的时候就会调用
     */
    public void contextInitialized(ServletContextEvent contextEvent)  {
        ServletContext context=contextEvent.getServletContext();  //获取上下文对象
        WebApplicationContext applicationContext=WebApplicationContextUtils.getRequiredWebApplicationContext(context);
        blogIndex=applicationContext.getBean("blogIndex",BlogIndex.class);  //加载BlogIndex对象
        blogService=applicationContext.getBean("blogServiceImpl",IBlogService.class);  //加载IBlogService对象
    }

参考文章

相关文章

网友评论

    本文标题:监听器获取spring配置文件创建的对象

    本文链接:https://www.haomeiwen.com/subject/kbvraftx.html