Spring MVC获取ApplicationContext

来源:互联网 发布:eve1200炮数据 编辑:程序博客网 时间:2024/05/29 02:27

Spring MVC获取ApplicationContext

获得了ApplicationContext你就可以根据bean名字去获取相应的bean.啥也不说了,直接上代码:

package com.cloume.tmcp.configuration;import java.io.Serializable;import java.util.List;import org.springframework.beans.BeansException;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.context.ApplicationContext;import org.springframework.context.ApplicationContextAware;import org.springframework.data.mongodb.core.MongoTemplate;import org.springframework.data.mongodb.core.query.Criteria;import org.springframework.data.mongodb.core.query.Query;import org.springframework.security.access.PermissionEvaluator;import org.springframework.security.core.Authentication;import org.springframework.security.core.userdetails.UserDetails;import org.springframework.stereotype.Component;import org.springframework.web.context.support.WebApplicationObjectSupport;@Component@EnableAutoConfigurationpublic class YourClass implements ApplicationContextAware{    //注意是static的    private static ApplicationContext applicationContext;    public boolean getMongoData() {        MongoTemplate mongoTemplate = (MongoTemplate)applicationContext.getBean("mongoTemplate", MongoTemplate.class);        Data data = mongoTemplate.findOne(Query.query(Criteria.where("username").is(username)), Data.class);        return data;    }    /**     * Spring启动的时候会自动调用下面的方法设置ApplicationContext的值     */    @Override    public void setApplicationContext(ApplicationContext ctx) throws BeansException {        applicationContext = ctx;    }}

上面是直接使用当前类实现ApplicationContextAware接口的,下面提供一个单例模式的SpringContextUtil,将这个类放到你的工程中去,需要的时候直接调用就可以了。

package org.company.xxx;import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware;     /**      *      * 获取spring容器,以访问容器中定义的其他bean      */public class SpringContextUtil implements ApplicationContextAware {    // Spring应用上下文环境    private static ApplicationContext applicationContext;    /**     * 实现ApplicationContextAware接口的回调方法,设置上下文环境     *      * @param applicationContext     */    public void setApplicationContext(ApplicationContext applicationContext) {        SpringContextUtil.applicationContext = applicationContext;    }    /**     * @return ApplicationContext     */    public static ApplicationContext getApplicationContext() {        return applicationContext;    }    /**     * 获取对象     * 这里重写了bean方法,起主要作用     * @param name     * @return Object 一个以所给名字注册的bean的实例     * @throws BeansException     */    public static Object getBean(String name) throws BeansException {        return applicationContext.getBean(name);    }}

使用方法:MongoTemplate mongoTemplate = (MongoTemplate)SpringContextUtil.getBean("mongoTemplate"); //bean的名称

1 0
原创粉丝点击