springboot中velocity tool中注入bean
在使用springboo的时候,遇到一个问题,想在tool类中注入一个bean,一直失败,翻了下源码,是因为工具类的初始化方法为反射class调用newInstance方法,详见
http://www.cnblogs.com/xiaoQLu/p/7292971.html
那还有没有其他方法实现呢,请教了组内的大神,丢了如下一段代码我
@Configuration public class WebAppConfigTest extends WebMvcConfigurerAdapter { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new VelocityPageToolsInterceptor()); } } class VelocityPageToolsInterceptor extends AbstractPageRenderContextHandlerInterceptor { private static final Map<String, Object> ATTR_MAP = Maps.newHashMap(); static { Class<?> dateTool = ClassUtils.resolveClassName("com.xx.xx.类名", WebAppConfig.class.getClassLoader()); ATTR_MAP.put("dateTool", BeanUtils.instantiate(dateTool)); } @Override protected void postHandleOnPageRenderContext(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(request.getServletContext()); modelAndView.getModel().put("testUtil", context.getBean("testUtil")); modelAndView.getModel().putAll(ATTR_MAP); } }
上面最关键的代码就是 ModelAndView.getModel().put("", "")方法,就是把对象放到model中