`
wmj2003
  • 浏览: 101928 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

xwork依赖注入示例

 
阅读更多

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

分享到:
评论
2 楼 wmj2003 2009-09-05  
上网学习别人的经验,同时阅读xwork的源代码!
1 楼 kyvin 2009-08-21  
能了解为什么你能对这些了解的这么清楚吗

相关推荐

    XWork源码+docs全

    5. **对象容器**:XWork内置了ObjectContainer,可以用于管理依赖注入,实现对象的生命周期管理。 6. **异常处理**:XWork有完善的异常处理机制,可以捕获和处理Action执行过程中的异常,并根据异常类型选择合适的...

    xWork2.1.2源代码下载

    9. `core`:这是xWork框架的核心模块,包含了框架的关键组件和服务,如控制器、拦截器、动作类和依赖注入等。 通过分析和学习这些源代码,开发者可以了解xWork如何处理请求、如何执行业务逻辑、如何与视图层交互,...

    xwork配置内容详细讲解

    - **依赖注入**:使用 IoC 容器来管理对象依赖关系。 - **包管理**:使用 Packages 来组织动作及其配置。 #### 二、XWork的配置文件详解 XWork 的核心配置文件通常为 `xwork.xml`,该文件是 XWork 运行的核心,...

    Struts2框架示例.doc

    7. **方便的Spring集成**:Struts2允许使用Spring进行依赖注入,无需额外的配置代码。 8. **多样的表示层展示**:Struts2支持多种表示层技术,如JasperReports、JFreeChart、Action链或文件下载。 9. **POJO表单与...

    webwork的jar包

    Spring是一个全面的应用框架,提供了依赖注入、AOP(面向切面编程)、事务管理等功能,用于构建松散耦合的Java应用。WebWork与Spring的集成可以让开发者利用Spring的强大功能,如服务定位和安全性,同时保持WebWork...

    struts2.0+spring2.0整合示例

    这个整合过程涉及到多个方面,包括Action类的灵活性、请求处理、依赖注入、测试性、输入捕获、表达式语言、对象绑定、类型转换以及数据验证等关键特性。 首先,Struts2.0的Action类相比Struts1.3有了显著的改进。...

    Struts2 应用程序示例

    6. **依赖注入(Dependency Injection,DI)**:Struts2支持Spring的DI,允许在Action类中注入服务层对象,以解耦代码。 7. **插件(Plugins)**:Struts2有许多插件,如 strut2-convention-plugin,它简化了Action...

    ssh的annotation示例

    `@Autowired`注解则自动注入依赖,而`@Qualifier`用来指定具体要注入哪个Bean。此外,`@Transactional`用于声明方法或类为事务性的。这些注解使得在spring配置文件中无需显式定义Bean和依赖关系。 ```java @Service...

    xworks核心文件

    这部分内容介绍了如何将XWork与Spring框架集成起来,以实现更灵活的依赖注入和配置管理。 #### XWork Tutorial 教程可能覆盖了从环境搭建到第一个应用的完整过程,适合初学者快速入门。 #### XWork2 Hello World ...

    SSH2及模型驱动,拦截器注入

    - **Spring**:主要负责业务逻辑层和数据访问层的对象管理,通过依赖注入和面向切面编程等特性简化开发。 - **Hibernate**:作为持久层框架,用于简化数据库操作。 #### 二、模型驱动(Model-Driven)与拦截器注入 ...

    Struts2的第一个入门实例(三)--Struts2与Guice整合

    在本实例中,我们将探讨如何将Google的依赖注入框架Guice与Struts2进行整合,以实现更加灵活和可扩展的项目结构。Guice帮助我们在应用程序中管理对象的生命周期,提供依赖注入,使得代码更易于测试和维护。 首先,...

    Struts2+Spring2+Hibernate3 web应用示例

    1. **提高开发效率**:Spring的依赖注入和面向切面编程特性使得代码更加清晰和可维护,而Hibernate则通过ORM减少了对SQL的编写需求。 2. **简化部署和配置**:通过使用Spring管理整个应用的生命周期,可以减少部署时...

    S2SH整合pager-taglibs示例

    2. Spring:Spring框架提供了依赖注入和面向切面编程的能力,使得代码更加松耦合,便于测试和管理。 3. Hibernate:Hibernate是一个对象关系映射(ORM)框架,简化了数据库操作,将Java对象与数据库表进行映射。 在...

    三大框架整合基础的项目

    Spring以其强大的依赖注入(DI)和面向切面编程(AOP)能力,提供了全面的框架支持;而Struts2作为MVC(模型-视图-控制器)设计模式的实现,主要用于处理HTTP请求和响应。 【描述】:虽然描述为空,但从“博文链接...

    Struts2、Spring和Hibernate应用实例

    - **依赖注入**:Spring通过依赖注入机制来管理对象之间的依赖关系,这使得对象的创建和配置变得更加简单。 - **面向切面编程**:Spring支持面向切面编程,可以通过声明式方式来实现横切关注点,如事务管理、日志...

    Struts2+Spring+Ibatis环境配置.doc

    Struts2作为MVC框架负责控制流程,Spring 提供依赖注入和事务管理等功能,而Ibatis则作为数据持久层框架,简化数据库操作。 Struts2框架的核心组件包括: 1. `struts2-core-2.0.11.jar`:这是Struts2框架的基础,...

    Struts2的Action中获得request response session几种方法

    Struts2支持依赖注入(Dependency Injection, DI),可以通过配置让框架自动将request、response、session等对象注入到Action中。这通常在Action的定义中通过注解或配置文件指定。 #### 示例代码: ```java import...

    整合struct2、spring、hibernate的(带文档,带sql,带所有包)

    这样的整合是企业级Java应用开发中常见的实践,因为它允许开发者利用各框架的优势,如Struts2的MVC模式、Spring的依赖注入和事务管理以及Hibernate的对象关系映射功能。 Struts2是一个基于MVC设计模式的Web应用框架...

    Struts2配置详解

    Struts2支持轻量级的依赖注入(IoC),使得开发者可以在配置文件中声明对象的创建和依赖关系,而不需要在代码中显式地创建对象或设置属性。这大大简化了应用程序的开发过程,提高了代码的可读性和可维护性。在上面的...

Global site tag (gtag.js) - Google Analytics