如何使用spring的autowire为servlet注入bean
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用spring的autowire为servlet注入bean相关的知识,希望对你有一定的参考价值。
在applicationContext.xml中定义数据层访问Bean:
<bean id="userDao" class="test.UserDaoImpl"></bean>public class MyServlet extends HttpServletprivate static final long serialVersionUID = 1L;
private UserDao userDao;
....
注入方法::在Servlet的init方法中增加以下代码:
public void init(ServletConfig config) throws ServletExceptionSpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this,
config.getServletContext());
并且在变量userDao上一行增加@Autowired:
@Autowiredprivate UserDao userDao; 参考技术A 使用spring的autowire为servlet注入bean:
思路:
1.创建一个类似于DelegatingFilterProxy那样的代理,通过代理根据配置来找到实际的Servlet,完成业务逻辑功能。
假定有一个Servlet名字叫UserServlet,需要注入一个UserManager,伪代码如下:
public class UserServlet extends HttpServlet
@Autowired(required = true)
private UserManager userManager;
2.配置web.xml文件,原来UserServlet的配置大致是这样的:
<servlet>
<servlet-name>userServlet</servlet-name>
<servlet-class>com.sample.DelegatingServletProxy</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>userServlet</servlet-name>
<url-pattern>/userServlet</url-pattern>
</servlet-mapping>
注意:spring是根据Servlet的名字来查找被代理的Servlet的,所以,首先要在UserServlet类前面加上 @Component,来告诉Srping:也是一个Bean。如果名称和Web.xml里面定义的不一样的话,可以在这里指定Bean的名字,比如: @Component(“userServlet”)
spring配置 文件中:
<bean id=”menueInitServlet”>
<property name=”userService” ref=”userService”></property>
以上是关于如何使用spring的autowire为servlet注入bean的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spring Boot 类之间正确注入 @Autowired?
如何在 Spring Boot 中手动新建实例中使用 @Autowired