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中

 

posted @ 2017-08-21 20:44  muzhi121  阅读(440)  评论(0编辑  收藏  举报