当前位置: 首页 > 面试题库 >

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

封鸿雪
2023-03-14
问题内容

目前,我需要弹簧豆的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定义了thingtype 属性MyClass,则myBean应该将spring bean作为普通的JSP属性注入。



 类似资料:
  • 问题内容: 我正在使用一个已定义的拦截器,我想从拦截器中通过DAO层进行db调用,所以我如何将Spring bean注入到struts拦截器中。是否可以将spring bean注入到struts拦截器中,任何人都可以提出任何想法在此。 问题答案: 编辑 由于不需要将拦截器声明为Spring bean,因此删除了不必要的部分。感谢@AleksandrM对其进行测试。 就像使用Actions一样,(如

  • 我正在编写单元测试,有一个非常复杂的设置。 依赖bean设置一些侦听器,并将它们传递给自动连线服务。 我想测试侦听器是否存在,但不调用它们,因此我想传递'null'而不是自动连线服务。(特别是:我没有二传手…) 请注意,SUT确实间接依赖于返回侦听器的类。 因为这是一个来自大设置的非常小的示例,所以我不想在这里使用mock,因为我只想测试侦听器的存在性而不是行为。 嘲笑20或30个这样的服务会大大

  • 我有下面的映射器类,我想在其中使用。我正在尝试构造函数注入,但不起作用,并且正在打印。 mapStruct实现类 如果我使用使用字段注入,这样它就可以正常工作。这意味着Spring不支持类的构造函数注入。是因为类不能直接实例化,需要子类来实例化吗? 有没有什么方法可以在实现类中创建一个构造函数,如下所示: 这样,构造函数注入应该可以工作。

  • 我有几个EJB3。x无状态会话bean,未定义接口。我需要将这些bean注入到Springbean中,但我无法这样做。 无接口EJB: 我的豆子: 还有我的豆子。xml 在初始化Spring容器时,我得到以下错误: 异常本身非常清楚——spring容器期望MyBean有一个本地接口视图作为其业务接口;但是,我没有(也不能介绍)。 非常感谢您的帮助!

  • 我使用的是SpringMVC3.2。4和Apache Commons Pooling 2.3,用于管理到SOAP服务的连接。我正在使用的一个功能是GenericObjectPool类中的“空闲对象逐出”线程功能: http://commons.apache.org/proper/commons-pool/api-2.3/org/apache/commons/pool2/impl/GenericOb

  • 总结一下我失败的项目:我的类与bean一起打包在一个WAR中。xml文件。我的WAR反过来被打包在一个EAR中,这个EAR文件被部署到内部使用Tyrus的GlassFish 4服务器上。 WebSocket规范说: 在JavaEE平台中运行的WebSocketendpoint必须具有CDI规范中描述的完全依赖注入支持。WebSocket实现JavaEE平台的一部分需要支持字段、方法和构造函数注入,