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); } }
Configuration in spring-servlet
<!--Don't let it load lazily, load it directly at startup-->
<bean class="
com.mmall.common.ApplicationContextHelper
" lazy-init="false"/>
Validate JsonMapper and 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); }
Run tomcat, the result
yintingtingdeMacBook-Pro:generator yintingting$ curl
http://localhost:8080/test/validate1.json
{"ret":false,"msg":"{str=cannot be empty, id=id cannot be empty, msg=cannot be empty}","data":null} yintingtingdeMacBook-Pro:generator yintingting$
When using mybatis, note that mybatis and mybatis-spring must correspond.
When mybatis version is above 3.4.0, mybatis-spring needs to be above 1.3.0