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

发布于 2021-01-30 22:52:16

目前,我需要弹簧豆的jsp 2.0标签使用以下代码:

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

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

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

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

    我的第一个念头是,您确定春季电话会很昂贵吗?这些东西已经过大量优化,因此在尝试对其进行优化之前,请确保它确实是一个问题。

    假设这
    一个问题,则的替代方法是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定义了thingtype 属性MyClass,则myBean应该将spring bean作为普通的JSP属性注入。



知识点
面圈网VIP题库

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

去下载看看