Struts2.0中内核中的XWOrk的注入的简单使用。
XWork使用Inject注解内核中类:
源代码如下:
package com.opensymphony.xwork2.inject;
import static com.opensymphony.xwork2.inject.Container.DEFAULT_NAME;
import static java.lang.annotation.ElementType.*;
import java.lang.annotation.Retention;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Target;
/**
* <p>Annotates members and parameters which should have their value[s]
* injected.
*
* @author crazybob@google.com (Bob Lee)
*/
@Target({METHOD, CONSTRUCTOR, FIELD, PARAMETER})
//可以看到注解可以在参数,方法,构造函数,字段等上 注解
@Retention(RUNTIME) //在运行时执行注解的
public @interface Inject {
/**
* Dependency name. Defaults to {@link Container#DEFAULT_NAME}.
*/
String value() default DEFAULT_NAME;
/**
* Whether or not injection is required. Applicable only to methods and
* fields (not constructors or parameters).
*/
boolean required() default true;
}
使用代码如下:
package cn.com.unutrip.struts2;
public interface IPerson {
public void say();
}
package cn.com.unutrip.struts2;
public class Person implements IPerson {
@Override
public void say() {
System.out.println(" xiao bai");
}
}
package cn.com.unutrip.struts2;
public interface IPersonService {
public void say();
}
package cn.com.unutrip.struts2;
import com.opensymphony.xwork2.inject.Inject;
public class PersonService implements IPersonService {
private IPerson person;
@Override
public void say() {
System.out.println(" person service ");
person.say();
}
public IPerson getPerson() {
return person;
}
@Inject
public void setPerson(IPerson person) {
this.person = person;
}
}
测试类:
package cn.com.unutrip.struts2;
import com.opensymphony.xwork2.inject.Container;
import com.opensymphony.xwork2.inject.ContainerBuilder;
/**
* xwork IOC 注入的使用
*
* @author longgangbai
*
*/
public class InjectContainer {
private Container container;
public static void main(String[] args) {
// IOC注入容器
InjectContainer test = new InjectContainer();
//容器的创建
ContainerBuilder cb = new ContainerBuilder();
//创建相应的对象
cb = cb.factory(IPerson.class, Person.class);
cb = cb.factory(IPersonService.class, PersonService.class);
test.setContainer(cb.create(true));
// 注释掉的代码也是正确的
// test.setContainer(new ContainerBuilder().factory(IPerson.class,
// Person.class).factory(IPersonService.class, PersonService.class)
// .create(true));
Container container = test.getContainer();
IPersonService person = container.getInstance(IPersonService.class);
person.say();
}
public Container getContainer() {
return container;
}
public void setContainer(Container container) {
this.container = container;
}
}
分享到:
相关推荐
6. **依赖注入**:XWork2支持依赖注入(DI),允许开发者声明性地注入需要的依赖,提高了代码的可测试性和可维护性。结合Spring等IoC容器,可以实现更复杂的依赖关系管理。 7. **插件机制**:XWork2具有良好的插件...
- **依赖注入**:使用 IoC 容器来管理对象依赖关系。 - **包管理**:使用 Packages 来组织动作及其配置。 #### 二、XWork的配置文件详解 XWork 的核心配置文件通常为 `xwork.xml`,该文件是 XWork 运行的核心,...
核心架构是XWork,它与Spring框架进行了集成,提供了强大的业务逻辑处理和依赖注入能力。 **XWork框架详解:** XWork是一个轻量级的、基于Action的框架,主要负责处理业务逻辑。它为Action提供了丰富的功能,包括...
// request对象已经通过IoC注入,可以直接使用 return SUCCESS; } } ``` 在这种情况下,我们使用了`@Action`注解,Struts2会自动处理Request对象的注入。 每种方式都有其适用场景,例如,如果你希望完全控制...
由于没有使用依赖注入(IoC),因此可以独立于Servlet容器运行。 - **示例代码**: ```java package struts2.login; import java.util.Map; import com.opensymphony.xwork2.ActionContext; import ...
5. 定义Hibernate的DAO接口和实现类,使用@Autowired注入SessionFactory,实现对数据库的操作。 6. 使用Spring的事务管理,配置tx命名空间,声明事务边界,可以使用编程式事务管理或者声明式事务管理。 7. 在Action...
尽管XWork拥有自己的依赖注入(IoC)容器,但其功能并不如Spring全面,在本教程中我们不会深入探讨XWork的IoC容器。在Struts 2中,控制器被称为“Action”,这是因为它们必须实现`Action`接口。`ActionSupport`类是...
Spring的核心是基于JavaBean属性的**依赖注入**(Inversion of Control, IoC)容器,这是Spring框架的基础之一。但是,IoC容器只是Spring整体框架中的一部分;Spring的独特之处在于能够使用IoC容器作为构建整个架构...
3. **OGNL(Object Graph Notation Language)**:OGNL是WebWork和XWork框架所使用的一种表达式语言,它提供了一种强大而简洁的方式来操作对象属性。 4. **拦截器(Interceptor)**:拦截器用于在Action执行前后...
Spring的核心是依赖注入(Inversion of Control, IoC)容器,它使得对象的创建和管理变得更加灵活。通过接口编程而非直接面向类,Spring鼓励良好的编程习惯。此外,Spring提供了数据访问抽象,包括简化JDBC的框架,...
2. **WebWork2 IoC**:WebWork2 自带了简单的IoC功能,允许在 `xwork.xml` 中配置 Action 依赖的 Bean。例如,`<external-ref>` 标签用于声明 Action 对 DAO 类的依赖。 3. **集成步骤**: - **下载集成库**:需要...
Struts2支持轻量级的依赖注入(IoC),使得开发者可以在配置文件中声明对象的创建和依赖关系,而不需要在代码中显式地创建对象或设置属性。这大大简化了应用程序的开发过程,提高了代码的可读性和可维护性。在上面的...
SSH整合的关键在于Spring,它可以协调Struts和Hibernate的工作,比如通过Spring的AOP实现事务管理,以及使用Spring的IoC容器管理Struts的Action和Hibernate的SessionFactory。`xwork_API.chm`提供了Struts2底层工作...
- IoC容器:管理组件生命周期,实现依赖注入。 WebWork2则构建于Xwork之上,主要负责处理HTTP的请求和响应,使用ServletDispatcher将HTTP请求映射到Action(业务层Action类)、session(会话)、application(应用...
Spring的核心特性是依赖注入(Dependency Injection,DI),通过JavaBean属性实现Inversion of Control(IoC)容器,使开发者能够更加专注于业务逻辑而非基础设施。Spring的IoC容器允许对象间的依赖关系被外部定义,...
2. **xwork-core.jar**:XWork是Struts2的前身,它的核心库被Struts2继承并使用。这个包包含了动作执行、类型转换、Ognl表达式等组件。 3. **ognl.jar**:Object-Graph Navigation Language(OGNL)是一个强大的...
- `spring-core.jar`:Spring框架的核心工具包,提供了框架的基本组成部分,如IoC和依赖注入功能。 - `spring-tx.jar`:提供平台抽象的事务管理服务。 - `spring-webmvc.jar`:Spring的Web MVC模块,支持Web应用的...
5. **struts2-spring-plugin-2.1.6.jar**:这是Struts2的Spring插件,用于集成Spring框架,使得Spring管理的bean可以直接在Struts2中使用,实现Action类的依赖注入。 通过整合这三个框架,开发者可以构建一个灵活、...