如何将Spring bean注入到jsp 2.0 SimpleTag中?
摆脱所有的Jackson豆子,以及谈判解析器中的json映射。对mvc:annotation-driven应配置,你需要为杰克逊序列化工作的一切。当前,我需要弹簧豆的jsp 2.0标签使用以下代码:
ac = WebApplicationContextUtils.getWebApplicationContext( servletContext);
ac.getBeansOfType(MyRequestedClass.class);
我刚得到第一个匹配的bean。
这段代码可以正常工作,但是有一个不希望有的缺点,即我花费了大约一半的页面渲染时间来查找spring bean,因为每次调用标签时都会发生这种情况。我在想也许将bean放入应用程序范围或至少会话范围。但是,解决这个问题的最明智的方法到底是什么?
-
我的第一个念头是,你确定spring电话会很昂贵吗?这些东西已经过大量优化,因此在尝试对其进行优化之前,请确保它确实是一个问题。
假设这是一个问题,则的替代属性是
exposeContextBeansAsAttributes
和。你可以使用一个(或另一个)(但不能同时使用两个)将部分或全部bean作为JSP属性公开。exposedContextBeanNamesInternalResourceViewResolver
这增加了将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
定义了thingtype
属性MyClass
,则myBean
应该将spring bean作为普通的JSP属性注入。