【问题标题】:can spring inject EJBs into annotated fields of servlet in a Java SE webapp?spring 可以将 EJB 注入 Java SE webapp 中的 servlet 注释字段吗?
【发布时间】:2011-12-02 09:06:37
【问题描述】:

Spring 支持注入 javax.ejb.EJB annotations,就像它注入 @Autowired 和其他 jsr-220 注入注解一样,这要归功于 CommonAnnotationBeanPostProcessor 类。

但是,注入对 servlet 不起作用,因为 servlet 不是由 spring 创建的。

这篇文章 - Spring injects servlets too - 没有给出使用 servlet 的示例,但声称可以使用方面的编译时编织。不幸的是,编译时编织不是我们的选择。是否可以在运行时执行此操作?如果有帮助,可以向 servlet 引入子类,但我想保留 EJB 注释,以便 servlet 仍然可以部署在 Java EE 容器中。

编辑:该应用程序将部署到生产环境中的 Java EE 容器中,但我正在考虑使用 spring 运行功能测试和本地部署以进行开发,以利用 Tomcat 中的热 JSP 加载。

【问题讨论】:

  • 注入什么? “注入注释”对我来说没有多大意义。无论如何,@EJB 在 servlet 中应该可以正常工作。至少,在真正的 Java EE(Web 配置文件)容器上。在像 Tomcat 这样的简单 servlet 容器上,您需要在其上放置例如 OpenEJB。
  • 注入注解——资源、注入、EJB注解。
  • 啊,我猜你正在使用 Tomcat。好吧,看看 OpenEJB:openejb.apache.org/3.0/tomcat.html 或者改用真正的 Java EE 容器,比如 Glassfish。它是免费的,而且发布速度比 Tomcat 快。

标签: spring jakarta-ee servlets dependency-injection


【解决方案1】:

您将需要像 Glassfish 中支持 EJB 注入的 Java EE 容器,并注意注入适用于托管类,如 servlet、托管 beans..etc(由容器管理的类),因此普通类中的 ejb 注入需要您改为使用查找。

【讨论】:

    猜你喜欢
    • 2014-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    • 2012-06-03
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多