package xworktest;
/**
* @author wangmingjie
* @date 2008-9-13上午11:13:38
*/
public interface IPerson {
public void say();
}
====================================
package xworktest;
/**
* @author wangmingjie
* @date 2008-9-13上午11:14:33
*/
public class Person implements IPerson {
public void say() {
System.out.println("这是:person");
}
}
====================================
package xworktest;
/**
* @author wangmingjie
* @date 2008-9-13上午11:14:00
*/
public interface IPersonService {
public void say();
}
====================================
package xworktest;
import com.opensymphony.xwork2.inject.Inject;
/**
* @author wangmingjie
* @date 2008-9-13上午11:15:25
*/
public class PersonService implements IPersonService {
private IPerson person;
public IPerson getPerson() {
return person;
}
/**
* 这个注释就是说明需要依赖注入
* @param person
*/
@Inject
public void setPerson(IPerson person) {
this.person = person;
}
public void say() {
System.out.println("userperson");
person.say();
}
}
====================================
package xworktest;
import com.opensymphony.xwork2.inject.Container;
import com.opensymphony.xwork2.inject.ContainerBuilder;
/**
* 测试xwork的inject注解的使用。了解xwork的Container容器。
* 在xwork中的container使用了动态代理技术。
* @author wangmingjie
* @date 2008-9-13上午11:17:35
*/
public class ContainerTest {
private Container container;
public static void main(String[] args) {
ContainerTest test = new ContainerTest();
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;
}
}
分享到:
相关推荐
5. **对象容器**:XWork内置了ObjectContainer,可以用于管理依赖注入,实现对象的生命周期管理。 6. **异常处理**:XWork有完善的异常处理机制,可以捕获和处理Action执行过程中的异常,并根据异常类型选择合适的...
9. `core`:这是xWork框架的核心模块,包含了框架的关键组件和服务,如控制器、拦截器、动作类和依赖注入等。 通过分析和学习这些源代码,开发者可以了解xWork如何处理请求、如何执行业务逻辑、如何与视图层交互,...
- **依赖注入**:使用 IoC 容器来管理对象依赖关系。 - **包管理**:使用 Packages 来组织动作及其配置。 #### 二、XWork的配置文件详解 XWork 的核心配置文件通常为 `xwork.xml`,该文件是 XWork 运行的核心,...
7. **方便的Spring集成**:Struts2允许使用Spring进行依赖注入,无需额外的配置代码。 8. **多样的表示层展示**:Struts2支持多种表示层技术,如JasperReports、JFreeChart、Action链或文件下载。 9. **POJO表单与...
Spring是一个全面的应用框架,提供了依赖注入、AOP(面向切面编程)、事务管理等功能,用于构建松散耦合的Java应用。WebWork与Spring的集成可以让开发者利用Spring的强大功能,如服务定位和安全性,同时保持WebWork...
这个整合过程涉及到多个方面,包括Action类的灵活性、请求处理、依赖注入、测试性、输入捕获、表达式语言、对象绑定、类型转换以及数据验证等关键特性。 首先,Struts2.0的Action类相比Struts1.3有了显著的改进。...
6. **依赖注入(Dependency Injection,DI)**:Struts2支持Spring的DI,允许在Action类中注入服务层对象,以解耦代码。 7. **插件(Plugins)**:Struts2有许多插件,如 strut2-convention-plugin,它简化了Action...
`@Autowired`注解则自动注入依赖,而`@Qualifier`用来指定具体要注入哪个Bean。此外,`@Transactional`用于声明方法或类为事务性的。这些注解使得在spring配置文件中无需显式定义Bean和依赖关系。 ```java @Service...
这部分内容介绍了如何将XWork与Spring框架集成起来,以实现更灵活的依赖注入和配置管理。 #### XWork Tutorial 教程可能覆盖了从环境搭建到第一个应用的完整过程,适合初学者快速入门。 #### XWork2 Hello World ...
- **Spring**:主要负责业务逻辑层和数据访问层的对象管理,通过依赖注入和面向切面编程等特性简化开发。 - **Hibernate**:作为持久层框架,用于简化数据库操作。 #### 二、模型驱动(Model-Driven)与拦截器注入 ...
在本实例中,我们将探讨如何将Google的依赖注入框架Guice与Struts2进行整合,以实现更加灵活和可扩展的项目结构。Guice帮助我们在应用程序中管理对象的生命周期,提供依赖注入,使得代码更易于测试和维护。 首先,...
1. **提高开发效率**:Spring的依赖注入和面向切面编程特性使得代码更加清晰和可维护,而Hibernate则通过ORM减少了对SQL的编写需求。 2. **简化部署和配置**:通过使用Spring管理整个应用的生命周期,可以减少部署时...
2. Spring:Spring框架提供了依赖注入和面向切面编程的能力,使得代码更加松耦合,便于测试和管理。 3. Hibernate:Hibernate是一个对象关系映射(ORM)框架,简化了数据库操作,将Java对象与数据库表进行映射。 在...
Spring以其强大的依赖注入(DI)和面向切面编程(AOP)能力,提供了全面的框架支持;而Struts2作为MVC(模型-视图-控制器)设计模式的实现,主要用于处理HTTP请求和响应。 【描述】:虽然描述为空,但从“博文链接...
- **依赖注入**:Spring通过依赖注入机制来管理对象之间的依赖关系,这使得对象的创建和配置变得更加简单。 - **面向切面编程**:Spring支持面向切面编程,可以通过声明式方式来实现横切关注点,如事务管理、日志...
Struts2作为MVC框架负责控制流程,Spring 提供依赖注入和事务管理等功能,而Ibatis则作为数据持久层框架,简化数据库操作。 Struts2框架的核心组件包括: 1. `struts2-core-2.0.11.jar`:这是Struts2框架的基础,...
Struts2支持依赖注入(Dependency Injection, DI),可以通过配置让框架自动将request、response、session等对象注入到Action中。这通常在Action的定义中通过注解或配置文件指定。 #### 示例代码: ```java import...
这样的整合是企业级Java应用开发中常见的实践,因为它允许开发者利用各框架的优势,如Struts2的MVC模式、Spring的依赖注入和事务管理以及Hibernate的对象关系映射功能。 Struts2是一个基于MVC设计模式的Web应用框架...
Struts2支持轻量级的依赖注入(IoC),使得开发者可以在配置文件中声明对象的创建和依赖关系,而不需要在代码中显式地创建对象或设置属性。这大大简化了应用程序的开发过程,提高了代码的可读性和可维护性。在上面的...