如何将Spring bean注入到jsp 2.0 SimpleTag中?

发布于 2021-02-02 18:11:54

摆脱所有的Jackson豆子,以及谈判解析器中的json映射。对mvc:annotation-driven应配置,你需要为杰克逊序列化工作的一切。当前,我需要弹簧豆的jsp 2.0标签使用以下代码:

ac = WebApplicationContextUtils.getWebApplicationContext( servletContext);
ac.getBeansOfType(MyRequestedClass.class);

我刚得到第一个匹配的bean。

这段代码可以正常工作,但是有一个不希望有的缺点,即我花费了大约一半的页面渲染时间来查找spring bean,因为每次调用标签时都会发生这种情况。我在想也许将bean放入应用程序范围或至少会话范围。但是,解决这个问题的最明智的方法到底是什么?

关注者
0
被浏览
78
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    我的第一个念头是,你确定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属性注入。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看