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 中,注入是一种非常重要的机制,用于将 bean 对象注入到其他 bean 对象中,以便实现松耦合和高内聚的设计目标。下面我们将对 Spring Boot 中的几种注入方法进行详细的介绍和分析。 1. @Autowired @...
1. 创建Bean:首先,你需要在Spring配置文件中声明你的bean,或者使用`@Component`、`@Service`、`@Repository`、`@Controller`等注解来标记类,让Spring自动扫描并管理。 2. 注解注入:在需要注入依赖的类中,使用...
SpringCloud Function SpEL 注入漏洞分析(CVE-2022-22963) SpringCloud Function 是 Spring 提供的一套分布式函数式编程组件,旨在帮助开发者专注于业务逻辑实现,而不需要关心服务器环境运维等问题。然而,在 ...
在这个专题里,我们将深入探讨Spring 3.0中的注解注入机制。 首先,注解注入允许我们通过在类的字段或方法上使用特定的注解来声明依赖关系,而不是在XML配置文件中进行声明。主要的注解包括`@Autowired`、`@...
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 ...
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 ...
在IT行业中,Spring框架是Java开发中的一个基石,尤其在控制反转(IoC)和依赖注入(DI)方面。依赖注入是一种设计模式,它允许我们解耦组件,提高代码的可测试性和可维护性。Spring框架通过IoC容器来实现DI,让我们...
此外,Spring框架也引入了JSR-330定义的依赖注入注解,如`@Inject`,并与JSR-250的注解(如`@PostConstruct`、`@PreDestroy`)进行集成,使代码更加简洁。同时,Spring的`@Component`、`@Service`、`@Repository`和`...
在本示例中,“exe将dll注入到explorer.exe资源管理器进程_DLL注入示例”是一个具体的操作实例,它演示了如何将DLL注入到Windows资源管理器进程(explorer.exe)中。 首先,我们需要理解DLL是什么。DLL(Dynamic ...
本实例将详细讲解如何将Mybatis与Spring整合到一个Maven Web项目中,以便利用Spring的依赖注入和事务管理功能。 首先,集成Mybatis和Spring的关键在于配置。在项目中,我们需要引入必要的库,包括Spring的相关模块...
injectdll远程线程注入
本教程将深入讲解如何在Spring中使用注解来实现依赖注入。 首先,我们要了解Spring支持的主要注解。其中,`@Autowired`是用于自动装配依赖的注解,Spring会根据类型或名称自动匹配并注入合适的bean。`@Qualifier`...
Spring 依赖注入:@Autowired,@Resource 和@Inject 区别与实现原理 Spring 依赖注入是指在应用程序中将对象之间的依赖关系自动装配的过程。Spring 框架提供了多种依赖注入方式,包括 @Autowired、@Resource 和@...
Spring框架是Java应用程序开发中的一个核心组件,它提供了一个全面的基础设施来管理对象的生命周期和...选择XML还是注解方式取决于项目需求和个人偏好,通常推荐在现代项目中使用注解注入,以享受其简洁性和便利性。
* 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容器会自动将Bean实例注入到标记了此注解的字段或方法参数中。 - 默认情况下,`@Autowired` 是基于类型进行匹配的,如果存在多个相同类型的Bean,则需要配合`@Qualifier`注解进一步...
在Spring4中,可以使用JSR-330的依赖注入注解,如`@Inject`,同时保持向后兼容。 SpringMVC是Spring框架的一部分,专为构建Web应用程序的Model-View-Controller(MVC)架构。SpringMVC4.0引入了对Servlet 3.1 API的...
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 ...
6. **JSR-330依赖注入标准**:Spring 4.0.7遵循JSR-330规范,引入了`javax.inject`包,如`@Inject`注解,这使得Spring与其他遵循该标准的库更好地兼容。 7. **SpEL(Spring Expression Language)**:Spring表达式...
在这个例子中,通过构造函数上的`@Autowired`注解,Spring会在运行时自动将合适的JdbcTemplate实例注入到UserRepository中。 除了这些基本注解,Spring还提供了其他的注解来增强功能,例如: - `@Component`、`@...