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
发布评论