`

如何使用spring将service层注入到servlet中去(how to use Spring to inject ur service layer into the servlet )

 
阅读更多

In a typical struts+spring framework, we know how to inject our “service” into the “action”. But sometime we have to use the “servlet”.

I mean the real servlet, not the struts’s action-servlet!

For example:

We have a servlet name is “UserServlet”, we want to inject the service “MyTaskService” into it as following sample shows:

public class userServlet extends HttpServlet {

@Resource
MyTaskService myTaskService;
}

We will have two method:

Method 1:

we can directly override the servlet’s “init” method as following sample:

public void init(ServletConfig servletConfig) throws ServletException {
ServletContext servletContext = servletConfig.getServletContext();
WebApplicationContext webApplicationContext = WebApplicationContextUtils.
getWebApplicationContext(servletContext);
AutowireCapableBeanFactory autowireCapableBeanFactory =
webApplicationContext.getAutowireCapableBeanFactory();
autowireCapableBeanFactory.configureBean(this, BEAN_NAME);
}

The “BEAN_NAME” is the name which we want to inject thru the Spring, e.g. “MyTaskService”.

But this is not a graceful method.

Method 2:

We write a Delegate Bean, like the “org.springframework.web.struts.DelegatingRequestProcessor” , then we can thru configurable method to inject our service into the servlet, here is our Delegate Bean:

public class DelegatingServletProxy extends GenericServlet {
private String targetBean;
private Servlet proxy;

@Override
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
proxy.service(req, res);

}

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);
}
}

With this DelegatingServletProxy, we should make a little change of the “” cofig in our “web.xml”.

Normally, we config our “servlet” like this:

userServlet
com.sample.UserServlet

Now, we config our “servlet” in this way:

userServlet
com.sample.DelegatingServletProxy

No changes for “”, only for “”.

And the last thing is:

Pls don’t forget to add the “@Component” into the “servlet” to tell ur Spring container that this servlet will be regarded as a “spring-bean”. Here is a sample:

@Component
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Resource
MyTaskService myTaskService;
}

Ok, done, now we can enjoy the “IoC” into our servlet.

分享到:
评论

相关推荐

    关于spring boot中几种注入方法的一些个人看法

    在 Spring Boot 中,注入是一种非常重要的机制,用于将 bean 对象注入到其他 bean 对象中,以便实现松耦合和高内聚的设计目标。下面我们将对 Spring Boot 中的几种注入方法进行详细的介绍和分析。 1. @Autowired @...

    Spring依赖注入——java项目中使用spring注解方式进行注入.rar

    1. 创建Bean:首先,你需要在Spring配置文件中声明你的bean,或者使用`@Component`、`@Service`、`@Repository`、`@Controller`等注解来标记类,让Spring自动扫描并管理。 2. 注解注入:在需要注入依赖的类中,使用...

    SpringCloud Function SpEL注入漏洞分析(CVE-2022-22963).doc

    SpringCloud Function SpEL 注入漏洞分析(CVE-2022-22963) SpringCloud Function 是 Spring 提供的一套分布式函数式编程组件,旨在帮助开发者专注于业务逻辑实现,而不需要关心服务器环境运维等问题。然而,在 ...

    (转)Spring 3.0 注解注入详解

    在这个专题里,我们将深入探讨Spring 3.0中的注解注入机制。 首先,注解注入允许我们通过在类的字段或方法上使用特定的注解来声明依赖关系,而不是在XML配置文件中进行声明。主要的注解包括`@Autowired`、`@...

    Spring和Mybatis整合英文文档翻译.pdf

    It allows you to inject the mapper instances into your service layer without having to manually create or manage them. 5. **Transactions**: MyBatis-Spring handles transaction management by wrapping ...

    Learning Spring 5.0

    If you want to learn how to get around the Spring framework and use it to build your own amazing applications, then this book is for you. Beginning with an introduction to Spring and setting up the ...

    自己的代码模拟spring的依赖注入

    在IT行业中,Spring框架是Java开发中的一个基石,尤其在控制反转(IoC)和依赖注入(DI)方面。依赖注入是一种设计模式,它允许我们解耦组件,提高代码的可测试性和可维护性。Spring框架通过IoC容器来实现DI,让我们...

    spring 源码中文注释

    此外,Spring框架也引入了JSR-330定义的依赖注入注解,如`@Inject`,并与JSR-250的注解(如`@PostConstruct`、`@PreDestroy`)进行集成,使代码更加简洁。同时,Spring的`@Component`、`@Service`、`@Repository`和`...

    exe将dll注入到explorer.exe资源管理器进程_DLL注入示例.injectdll

    在本示例中,“exe将dll注入到explorer.exe资源管理器进程_DLL注入示例”是一个具体的操作实例,它演示了如何将DLL注入到Windows资源管理器进程(explorer.exe)中。 首先,我们需要理解DLL是什么。DLL(Dynamic ...

    Mybatis集成Spring的实例代码_动力节点Java 学院整理

    本实例将详细讲解如何将Mybatis与Spring整合到一个Maven Web项目中,以便利用Spring的依赖注入和事务管理功能。 首先,集成Mybatis和Spring的关键在于配置。在项目中,我们需要引入必要的库,包括Spring的相关模块...

    injectdll远程线程注入

    injectdll远程线程注入

    spring注解实现注入.zip

    本教程将深入讲解如何在Spring中使用注解来实现依赖注入。 首先,我们要了解Spring支持的主要注解。其中,`@Autowired`是用于自动装配依赖的注解,Spring会根据类型或名称自动匹配并注入合适的bean。`@Qualifier`...

    详解Spring依赖注入:@Autowired,@Resource和@Inject区别与实现原理

    Spring 依赖注入:@Autowired,@Resource 和@Inject 区别与实现原理 Spring 依赖注入是指在应用程序中将对象之间的依赖关系自动装配的过程。Spring 框架提供了多种依赖注入方式,包括 @Autowired、@Resource 和@...

    Spring属性注入

    Spring框架是Java应用程序开发中的一个核心组件,它提供了一个全面的基础设施来管理对象的生命周期和...选择XML还是注解方式取决于项目需求和个人偏好,通常推荐在现代项目中使用注解注入,以享受其简洁性和便利性。

    ASP.NET Core 1.1 For Beginners: How to Build a MVC Website

    * Dependency Injection (To inject objects into constructors) * Tag Helper (to clean up the HTML and enable re-use) * HTML Helper methods (to clean up your HTML and enable re-use) * Bower/NuGet (To ...

    Spring面试宝典 不看后悔

    - 用于实现自动装配,即Spring容器会自动将Bean实例注入到标记了此注解的字段或方法参数中。 - 默认情况下,`@Autowired` 是基于类型进行匹配的,如果存在多个相同类型的Bean,则需要配合`@Qualifier`注解进一步...

    Spring4.0+Hibernate4.0+SpringMVC4.0整合框架

    在Spring4中,可以使用JSR-330的依赖注入注解,如`@Inject`,同时保持向后兼容。 SpringMVC是Spring框架的一部分,专为构建Web应用程序的Model-View-Controller(MVC)架构。SpringMVC4.0引入了对Servlet 3.1 API的...

    pe-inject 修改程序导入表

    To inject your code into foreign executables you only need to make a DLL file with functions you want to inject into PE file, call PE-inject function to place the DLL into the executable and the file ...

    spring 4.0.7 源码

    6. **JSR-330依赖注入标准**:Spring 4.0.7遵循JSR-330规范,引入了`javax.inject`包,如`@Inject`注解,这使得Spring与其他遵循该标准的库更好地兼容。 7. **SpEL(Spring Expression Language)**:Spring表达式...

    spring注解方式解析

    在这个例子中,通过构造函数上的`@Autowired`注解,Spring会在运行时自动将合适的JdbcTemplate实例注入到UserRepository中。 除了这些基本注解,Spring还提供了其他的注解来增强功能,例如: - `@Component`、`@...

Global site tag (gtag.js) - Google Analytics