java - 直接注入(inject)到 servlet 而不是新的 ClassPathXmlApplicationContext

标签 java applicationcontext spring-bean

我有一个包含许多 servlet 的大型 java 项目。每个 servlet 都需要 使用以下命令从同一个 bean 文件获取对象:

ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");

然后我使用

     context.getBean("<BEAN_NAME">);

其中一些甚至需要获得相同的对象。

问题是是否可以将我想要的对象直接注入(inject) servlet,而无需手动读取 bean 文件。

每个 servlet 都在 web.xml 中配置。

任何有关此问题的信息将不胜感激!

谢谢

最佳答案

您是否考虑过让您的 servlet 实现 HttpRequestHandler

然后,您必须将 Servlet 声明为名为 Spring bean 并在 web.xml 上使用相同的名称,然后您可以简单地使用 @Autowired 注释将 Spring bean 注入(inject)到 Servlet 中

更多信息请访问 http://www.codeproject.com/Tips/251636/How-to-inject-Spring-beans-into-Servlets

示例代码:


  @Component("myServlet") 
   public class MyServlet implements HttpRequestHandler {

        @Autowired
        private MyService myService;
...

示例 web.xml

<servlet>     
            <display-name>MyServlet</display-name>
            <servlet-name>myServlet</servlet-name>
            <servlet-class>org.springframework.web.context.support.HttpRequestHandlerServlet
           </servlet-class>
    </servlet>
    <servlet-mapping>
            <servlet-name>myServlet</servlet-name>
            <url-pattern>/myurl</url-pattern>
    </servlet-mapping>

关于java - 直接注入(inject)到 servlet 而不是新的 ClassPathXmlApplicationContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17572191/

相关文章:

java - 从 HttpServletRequest 转换为 WebRequest

java - oAuth 2.0 用于 Google Apps 审核 api

java - 如何在运行时更改 @autowired bean 实现?

java - @Order 与 @Bean 注释的方法行为

java - @PostInitialize 哪个包的一部分

java - 无法从 jar 加载类定义

JavaFX 模态阶段在 MAC 上表现异常

java - Spring 4 使用基于类的数​​据库初始化而不是 xml bean

java - 如何修复 "No ModelAndView found"失败的测试?

java - 在没有注释或 xml 配置的情况下创建主要 bean