目前我需要spring bean的jsp 2.0标签使用此代码:
ac = WebApplicationContextUtils.getWebApplicationContext( servletContext);
ac.getBeansOfType(MyRequestedClass.class);
Run Code Online (Sandbox Code Playgroud)
我刚刚得到第一个匹配的bean.
这段代码运行正常,但是有一个不希望出现的缺点,我花了大约一半的页面渲染时间来查找spring bean,因为每次调用一个标签时都会发生这种情况.我想也许可以将bean放入应用程序范围或至少是会话范围.但是,处理这个问题的最聪明方法是什么?
我想在spring-mvc应用程序中的自定义taglibs中使用spring-beans.原因TagLib-Instances不是由spring实例化的,我不能使用dependnecy-injection.
我的下一个想法是通过拦截器将spring-context添加到请求中,并从tag-class中的请求中获取它.
有没有更好的方法在taglibs中使用spring?春天有什么东西可以随时使用吗?如果spring-mvc中还没有customtag-support,是否有办法用依赖项填充现有对象?
public class MyTag extends TagSupport {
@Autowired
private MyObject object;
public void setMyObject(MyObject myObject) {
this.myObject = myObject;
}
public int doEndTag() {
ApplicationContext context = request.getAttribute("context");
context.populate(this);
return object.doStuff();
}
}
Run Code Online (Sandbox Code Playgroud)