如何将Spring bean注入到jsp 2.0 SimpleTag中?
目前,我需要弹簧豆的jsp 2.0标签使用以下代码:
ac = WebApplicationContextUtils.getWebApplicationContext( servletContext);
ac.getBeansOfType(MyRequestedClass.class);
我刚得到第一个匹配的bean。
这段代码可以正常工作,但是有一个不希望有的缺点,就是我花了大约一半的页面渲染时间来查找spring
bean,因为每次调用标签时都会发生这种情况。我在想也许将bean放入应用程序范围或至少会话范围内。但是,解决这个问题的最明智的方法到底是什么?
-
我的第一个念头是,您确定春季电话会很昂贵吗?这些东西已经过大量优化,因此在尝试对其进行优化之前,请确保它确实是一个问题。
假设这 是
一个问题,则的替代方法是exposeContextBeansAsAttributes
和的exposedContextBeanNames
属性InternalResourceViewResolver
。您可以使用一个或另一个(但不能同时使用两个)将部分或全部bean公开为JSP属性。这增加了将Spring bean实际注入到标签类中的可能性。例如,在您的Spring环境中,您可以:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="exposeContextBeansAsAttributes" value="true"/> </bean> <bean id="myBean" class="com.x.MyClass"/>
您的JSP:
<MyTag thing="${myBean}"/>
因此,如果
MyTag
定义了thing
type 属性MyClass
,则myBean
应该将spring bean作为普通的JSP属性注入。