??如果說BeanFactory是Spring的心臟,那么ApplicationContext就是完整的身軀了。ApplicationContext由BeanFactory派生而來,提供了更多面向?qū)嶋H應用的功能。
實現(xiàn)ApplicationContextAware接口
package com.permission.common;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/**
* @version:1.0.0
* @author: lironghong
* @date: 2019/4/21 21:04
* @description: ApplicationContext獲取上下文
*/
@Component("ApplicationContextHelper")
public class ApplicationContextHelper implements ApplicationContextAware {
private static ApplicationContext context;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
context = applicationContext;
}
public static <T> T popBean(Class<T> tClass) {
if (context == null) {
return null;
}
return context.getBean(tClass);
}
public static <T> T popBean(String name, Class<T> tClass) {
if (context == null) {
return null;
}
return context.getBean(name,tClass);
}
}
配置被spring管理(spring-servlet.xml)
<bean class="com.permission.common.ApplicationContextHelper" lazy-init="false"></bean>
測試
@RequestMapping("/validator.json")
@ResponseBody
public JsonData validator(TestVo vo) throws ParamException {
log.info("validator");
SysAclMapper sysAclMapper = ApplicationContextHelper.popBean(SysAclMapper.class);
SysAcl sysAcl = sysAclMapper.selectByPrimaryKey(1);
log.info(JsonUtils.objtoString(sysAcl)+"哈哈");
BeanValidator.check(vo);
return JsonData.success("test validator");
}