用servlet的时候遇到一个问题,想往servlet中直接注入Spring的bean,但是servlet是由web容器管理的,不能将其交给spring进行管理,但是用如下方法可以完成:
一、编写一个servlet代理,如下:
public class DelegatingServletProxy extends GenericServlet{
private static final long serialVersionUID = 1L;
private String targetBean;//目标bean
private Servlet proxy;
@Override
public void service(ServletRequest req,
ServletResponse res) throws ServletException,
IOException {
proxy.service(req, res);
}
@Override
public void init() throws ServletException {
this.targetBean = getServletName();
getServletBean();
proxy.init(getServletConfig());
}
private void getServletBean() {
WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());
this.proxy = (Servlet) wac.getBean(targetBean);
}
}
二、在web.xml中配置Spring自动加载的监听,用以启动Spring容器,配置需要的servlet,并将servlet的类指向刚才的代理。
三、
编写一个bean,继承自HttpServlet,它将是响应请求的servlet。然后在applicationContext.xml中为
其注入,要注意注入bean的名字需和web.xml中写的servlet的servlet-name一致。然后可以随便为这个bean注入什么样的值。
另外还可以用filter的方式,使用如下两个filter:
org.springframework.security.util.FilterToBeanProxy,
org.springframework.web.filter.DelegatingFilterProxy
分享到:
相关推荐
在 Java 应用中使用 Spring,我们需要创建一个 Spring 上下文(ApplicationContext)来加载 Bean 的定义。这个上下文将负责创建和管理 Bean,以及执行依赖注入。通常,我们可以使用 `ClassPathXmlApplicationContext...
总之,在Servlet中直接获取Spring的Bean可以帮助简化代码,减少重复的工作,并利用Spring的依赖注入能力。然而,这种方式应该谨慎使用,因为它可能破坏了依赖注入的初衷,使得代码更难测试和维护。在可能的情况下,...
只需在`beans.xml`中声明这些对象,然后在Servlet中声明对应的成员变量并使用`@Autowired`注解,Spring容器会在初始化Servlet时自动将对象注入,避免了手动创建对象和管理对象生命周期的繁琐工作。 4. **Spring MVC...
本篇文章将深入探讨`Spring JdbcTemplate`的注入以及如何在Servlet中使用它。 首先,让我们了解一下`JdbcTemplate`的基本概念。`JdbcTemplate`的核心功能包括:执行SQL查询、更新、调用存储过程等,同时提供了一套...
我们可以使用 @Autowired 注解来自动注入 Bean 对象。 ```java @Service public class MyService { @Autowired private UserManager userManager; public void doSomething() { userManager.doSomething(); }...
- **通过代码注解**:Spring也支持通过注解来获取Bean,如`@Autowired`和`@Resource`,它们能够自动将依赖注入到目标字段或方法中,无需手动从ApplicationContext获取。 3. **静态Singleton Bean Manager** 通常...
在Web项目中,Spring框架提供了一种控制反转(Inversion of Control, IOC)和依赖注入(Dependency Injection, DI)的功能,使得我们可以方便地管理和使用Bean。然而,有时我们需要在非Spring管理的组件或者非Spring...
开发者无需在Filter或Servlet内部硬编码bean名称,而是通过Spring容器自动注入所需的依赖,大大提升了代码的整洁度和复用性。此外,Spring提供的Filter和Servlet代理类,进一步简化了集成过程,使开发者可以专注于...
在 Spring MVC 中,自动注入是一种依赖注入(Dependency Injection, DI)的方式,它允许框架自动为对象设置所需的依赖,而无需手动进行实例化和配置。 1. **依赖注入的概念** 依赖注入是面向切面编程(AOP)的核心...
2. **Filter**: 同样,可以在Filter的init()方法中获取ApplicationContext,或者通过ServletContextAware接口,将Spring上下文注册到ServletContext,然后在doFilter()方法中使用。 3. **Listener**: 在监听器的...
4. **setter方法注入**:使用`@Autowired`注解在setter方法上,Spring会在运行时调用setter方法注入Bean。 **Spring框架的组件** Spring框架由多个模块组成,包括: 1. **Core Container**:包括Core和Beans模块...
Controller类通常通过注解如`@RequestMapping`来定义处理路径,使用Spring的强大功能如AOP(面向切面编程)和DI(依赖注入)来简化业务逻辑。然而,Spring MVC的性能通常被认为略逊于原生Servlet,因为框架本身引入...
3. **创建Spring配置**:在指定的`contextConfigLocation`(例如`spring-servlet.xml`)中,定义Spring的bean,包括控制器、服务层、数据访问层等。 4. **编写Servlet Controller**:在Spring MVC中,Controller...
在Java Web开发中,Spring框架和Servlet是两个重要的组件,它们在构建现代应用程序时起着核心作用。Spring是一个全面的企业级应用框架,提供了依赖注入、面向切面编程、数据访问、事务管理等功能,而Servlet是Java ...
如果你使用的是 Servlet 2.4 及以上的 web 容器,那么你仅需要在 web 应用的 XML 声明文件 web.xml 中增加下述 ContextListener 即可:<web-app>...<listener><listener-class>org.springframework.web.context....
当我们在Servlet中调用Spring管理的DAO时,会遇到一个问题:Servlet并不是由Spring容器直接管理的,因此在Servlet中不能直接使用依赖注入的方式来获取DAO的实例。为了解决这一问题,可以采用以下技术方案。 首先,...
【标题】"servlet+hibernate+spring实现添删改查"是一个常见的Web开发教程主题,它涵盖了Java后端开发中的三个核心框架:Servlet、Hibernate和Spring。这个主题主要针对初学者,旨在帮助他们理解如何整合这三个技术...
Spring框架是Java平台的一个广泛使用的框架,用于管理对象的生命周期和依赖注入。在`web.xml`中配置Spring时,通常通过Listener来加载Spring容器,这样可以在应用程序启动时初始化所有的Spring Bean。 **示例代码:...
1. Spring容器:理解Bean的定义、依赖注入以及自动扫描。 2. Controller:创建Controller类,处理HTTP请求,并通过ModelAndView返回响应。 3. 视图解析:配置视图解析器,如InternalResourceViewResolver,将逻辑...
在IT领域,Spring框架和Servlet技术是Web开发中的重要组成部分,尤其对于初学者而言,"spring+servlet 入门hello_world"是一个极好的起点。这个实例将帮助你理解这两个技术的基础概念以及它们如何协同工作来构建一个...