WebRenderExt在spring框架实现了接口,如何在WebRenderExt内部注入bean

辰先生 发布于 2016/08/30 16:57
阅读 424
收藏 0

我实现了WebRenderExt

用的spring继承了beetl,请问下,如果在WebRenderExt里注入beanService


以下是问题补充:

@辰先生:WebApplicationContext applicationContext = WebApplicationContextUtils.getWebApplicationContext(request.getServletContext()); BeetlGroupUtilConfiguration config = (BeetlGroupUtilConfiguration) applicationContext.getBean("beetlConfig"); GroupTemplate group = config.getGroupTemplate(); (2016/08/30 17:42)
加载中
0
闲大赋
闲大赋

   WebRenderExt 是通过Class.forName 加载的,注入不了

  大部分功能都可以在spring filter 里来通过request.setAttribute 来为模板添加公共属性,没有必要等到渲染的时候靠beetl来做


辰先生
辰先生
我现在想,在GlobalExt里调用service查询,这需要怎么做呢?
0
闲大赋
闲大赋

还是那句话,可以再filter里做,然后结果放到reqeust里

如果非得在GlobalExt使用,那你的GlobalExt实现得能引用ApplicationContext

然后通过它获取service,你可以在某个spring管理的bean里设置一个静态变量来保存ApplicationContext,类似这种代码

http://www.cnblogs.com/wcyBlog/p/4657885.html




辰先生
辰先生
您在看下我上面追加的,这样方式获取也获取不了beetl的bean 但是其他的bean可以!
辰先生
辰先生
谢谢您的解答,感谢!
0
闲大赋
闲大赋

不懂什么叫Beetl的Bean?

0
逝水fox
逝水fox

如果你用了Spring,就没有必要用Class.forName()来实例化Bean,即使你的Bean没有在应用程序上下文定义,Spring仍然可以够着Bean实例并进行依赖注入。

AutowireCapableBeanFactory接口定义了createBean()方法可以给定任意的Class生成Bean实例(并按照注解配置或autowireMode对他进行自动的依赖注入)。而AutowireCapableBeanFactory可以通过ApplicationContext的getAutowireCapableBeanFactory() 方法得到。

http://docs.spring.io/spring/docs/4.2.6.RELEASE/javadoc-api/org/springframework/beans/factory/config/AutowireCapableBeanFactory.html

返回顶部
顶部