zoukankan      html  css  js  c++  java
  • 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中

  • 相关阅读:
    HDU1106 排序
    HDU2050 折线分割平面
    HDU2048 神、上帝以及老天爷
    POJ1836 Alignment
    POJ1182 食物链
    HDU2067 小兔的棋盘
    HTML中的ID不能以数字开头
    automake,autoconf使用详解
    How to install Samba server on Ubuntu 12.04
    Netbeans使用UTF-8编码
  • 原文地址:https://www.cnblogs.com/xiaoQLu/p/7403820.html
Copyright © 2011-2022 走看看