servlet 使用spring管理bean
要serlvet使用注解的形式去注入bean,那么如何才能将spring管理的bean注入到servlet中。原本spring管理的bean和servlet不在一个上下文环境中是无法相互注入的。
解决办法创建一个AbstractServlet 抽象类,让你的所有servlet继承于此类
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;
/**
* Servlet implementation class AbstractServlet
*/
public class AbstractServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public AbstractServlet() {
super();
// TODO Auto-generated constructor stub
}
public void init(ServletConfig config) throws ServletException {
SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this,
config.getServletContext());
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
关键在于SpringBeanAutowiringSupport.processBInjectionasedOnServletContext(this,
config.getServletContext());
通过使用spring提供的支持可以将当前的servlet上下文环境添加到spring管理的上下文环境中。
当然还有其他一些方法就不在这赘述了。
分享到:
相关推荐
而在整合Spring后,我们可以使用Spring提供的`HttpServletBean`或者`FrameworkServlet`(例如`DispatcherServlet`)作为Servlet的基础类,这样Servlet实例就会自动由Spring容器管理。`DispatcherServlet`是Spring ...
3. **资源利用率**:Spring MVC利用IoC容器管理Bean,可减少内存占用,而原生Servlet可能创建更多的临时对象。 4. **扩展性和可维护性**:Spring MVC提供了更好的模块化和解耦,使得添加新功能、调整逻辑、单元测试...
Spring通过其IoC容器,提供了更高级别的依赖管理和生命周期管理,使得Filter和Servlet能够更加灵活地与应用中的其他bean交互,避免了硬编码和降低了耦合度。 #### 实现步骤详解 1. **定义Filter或Servlet Bean** ...
- **BeanFactory** 是Spring中最基础的IoC容器,负责管理和实例化Bean。它允许开发者定义Bean的生命周期和依赖关系,提供了低级别的配置选项。 - **ApplicationContext** 是BeanFactory的扩展,增加了更多面向应用...
当我们在Servlet环境中工作时,有时需要在Servlet中直接访问由Spring管理的Bean,以便利用Spring提供的服务和功能。以下是如何在Servlet中直接获取Spring框架中的Bean的方法。 首先,我们理解Spring容器,即...
在 Web 应用中,Spring 通常作为 Servlet 容器的一部分工作,例如 Tomcat 或 Jetty,通过 XML 配置文件或注解来定义 Bean 的配置。然而,在非 Web 的 Java 应用程序,如桌面应用或服务,我们同样可以利用 Spring 的 ...
6. **Spring Bean管理**:理解IoC(Inversion of Control)和DI(Dependency Injection),以及如何使用XML或注解配置Spring Bean。 7. **数据绑定与表单验证**:Spring MVC如何自动将表单数据绑定到模型对象,以及...
《基于JSP+Servlet的图书管理系统后台用户信息查询操作详解》 在Web开发领域,Java技术以其强大的功能和跨平台特性被广泛应用。JSP(JavaServer Pages)和Servlet是Java Web开发中的重要组件,常用于构建动态网页。...
在本项目"maven+servlet+jsp+bean的demo"中,我们将会探索JavaWeb开发的基本元素,包括Maven构建工具、Servlet、JSP(JavaServer Pages)以及Bean。这个小示例演示了如何在IntelliJ IDEA中创建一个完整的Maven工程,...
如果你的Servlet需要这些高级特性,可能需要考虑使用Spring MVC的注解驱动方式或者自定义`HandlerAdapter`。 在阅读源码的过程中,可以了解`SimpleServletHandlerAdapter`是如何通过`doHandle`方法来调用Servlet的`...
如果你使用的是 Servlet 2.4 及以上的 web 容器,那么你仅需要在 web 应用的 XML 声明文件 web.xml 中增加下述 ContextListener 即可:<web-app>...<listener><listener-class>org.springframework.web.context....
总的来说,获取非Spring管理组件中的SpringBean主要有两种方式:一是通过实现`ApplicationContextAware`接口并存储ApplicationContext,二是使用注解和静态内部类来注入BeanFactory。这两种方法都是Spring框架提供的...
【标题】:基于Servlet+Spring+Mybatis的客户关系管理系统 【描述】:这个压缩包文件包含了一个基于Servlet、Spring和Mybatis框架构建的客户关系管理系统(CRM)的源代码。这种架构是Java Web开发中常见的一种组合...
3. **创建Spring配置**:在指定的`contextConfigLocation`(例如`spring-servlet.xml`)中,定义Spring的bean,包括控制器、服务层、数据访问层等。 4. **编写Servlet Controller**:在Spring MVC中,Controller...
2. **Spring的Servlet监听器**:如ContextLoaderListener,用于初始化Spring的ApplicationContext,加载配置文件并管理bean。 3. **HandlerMapping**:负责将请求映射到相应的处理器,Spring MVC提供了多种映射策略...
根据提供的文件信息,我们可以总结出以下关于Spring框架中获取Bean的几种方法的相关知识...总体来说,Spring框架的强大之处在于它提供了一系列灵活的方式来管理对象之间的依赖关系,极大地提高了软件开发的效率和质量。
Spring框架是Java平台的一个广泛使用的框架,用于管理对象的生命周期和依赖注入。在`web.xml`中配置Spring时,通常通过Listener来加载Spring容器,这样可以在应用程序启动时初始化所有的Spring Bean。 **示例代码:...
获取 Spring 里注册的 Bean 对象可以使用四种方法:继承 BaseDispatchAction、实现 BeanFactoryAware、使用 ApplicationContext、使用 @Autowired。每种方法都有其特点和应用场景,开发者可以根据实际情况选择合适的...