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
@EnableAutoConfiguration
public 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 orgpany.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的名称

更多推荐

Spring MVC获取ApplicationContext