package com.mmall.common; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; @Component("applicationContextHelper") public class ApplicationContextHelper implements ApplicationContextAware { private static ApplicationContext applicationContext; public void setApplicationContext(ApplicationContext context) throws BeansException { applicationContext = context; } public static <T> T popBean(Class<T> clazz) { if (applicationContext == null) { return null; } return applicationContext.getBean(clazz); } public static <T> T popBean(String name, Class<T> clazz) { if (applicationContext == null) { return null; } return applicationContext.getBean(name, clazz); } }
spring-servlet中配置
<!--不让它懒加载,启动的时候直接加载-->
<bean class="
com.mmall.common.ApplicationContextHelper" lazy-init="false"/>
验证JsonMapper和ApplicationContextHelper
TestController
@RequestMapping("/select") @ResponseBody public JsonData validate(TestVo vo) { SysAclModuleMapper moduleMapper = ApplicationContextHelper.popBean(SysAclModuleMapper.class); SysAclModule module = moduleMapper.selectByPrimaryKey(1); return JsonData.success(module); }
运行tomcat,结果
yintingtingdeMacBook-Pro:generator yintingting$ curl
http://localhost:8080/test/validate1.json
{"ret":false,"msg":"{str=不能为空, id=id 不可以为空哦, msg=不能为空}","data":null} yintingtingdeMacBook-Pro:generator yintingting$
使用mybatis的时候注意,mybatis和mybatis-spring一定要对应,
当mybatis版本在3.4.0以上,需要mybatis-spring在1.3.0以上