我有一个包含许多 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/