`
longgangbai
  • 浏览: 7356507 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

xwork IOC 注入的使用

阅读更多

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

}

分享到:
评论

相关推荐

    xwork2源代码及jar

    6. **依赖注入**:XWork2支持依赖注入(DI),允许开发者声明性地注入需要的依赖,提高了代码的可测试性和可维护性。结合Spring等IoC容器,可以实现更复杂的依赖关系管理。 7. **插件机制**:XWork2具有良好的插件...

    xwork配置内容详细讲解

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

    jdf.rar_基于xwork框架

    核心架构是XWork,它与Spring框架进行了集成,提供了强大的业务逻辑处理和依赖注入能力。 **XWork框架详解:** XWork是一个轻量级的、基于Action的框架,主要负责处理业务逻辑。它为Action提供了丰富的功能,包括...

    Struts2获取request的四种方式

    // request对象已经通过IoC注入,可以直接使用 return SUCCESS; } } ``` 在这种情况下,我们使用了`@Action`注解,Struts2会自动处理Request对象的注入。 每种方式都有其适用场景,例如,如果你希望完全控制...

    Struts2 如何使Action取得属性范围 通配符 国际化等内容

    由于没有使用依赖注入(IoC),因此可以独立于Servlet容器运行。 - **示例代码**: ```java package struts2.login; import java.util.Map; import com.opensymphony.xwork2.ActionContext; import ...

    Spring与Hibernate整合,Spring与Struts2整合源代码

    5. 定义Hibernate的DAO接口和实现类,使用@Autowired注入SessionFactory,实现对数据库的操作。 6. 使用Spring的事务管理,配置tx命名空间,声明事务边界,可以使用编程式事务管理或者声明式事务管理。 7. 在Action...

    Using Struts 2 - AppFuse 2 - Confluence(1).pdf

    尽管XWork拥有自己的依赖注入(IoC)容器,但其功能并不如Spring全面,在本教程中我们不会深入探讨XWork的IoC容器。在Struts 2中,控制器被称为“Action”,这是因为它们必须实现`Action`接口。`ActionSupport`类是...

    java开源框架的集合

    Spring的核心是基于JavaBean属性的**依赖注入**(Inversion of Control, IoC)容器,这是Spring框架的基础之一。但是,IoC容器只是Spring整体框架中的一部分;Spring的独特之处在于能够使用IoC容器作为构建整个架构...

    WebWork教程.pdf

    3. **OGNL(Object Graph Notation Language)**:OGNL是WebWork和XWork框架所使用的一种表达式语言,它提供了一种强大而简洁的方式来操作对象属性。 4. **拦截器(Interceptor)**:拦截器用于在Action执行前后...

    Java开源项目热门推荐[参照].pdf

    Spring的核心是依赖注入(Inversion of Control, IoC)容器,它使得对象的创建和管理变得更加灵活。通过接口编程而非直接面向类,Spring鼓励良好的编程习惯。此外,Spring提供了数据访问抽象,包括简化JDBC的框架,...

    spring与webwork框架集成

    2. **WebWork2 IoC**:WebWork2 自带了简单的IoC功能,允许在 `xwork.xml` 中配置 Action 依赖的 Bean。例如,`&lt;external-ref&gt;` 标签用于声明 Action 对 DAO 类的依赖。 3. **集成步骤**: - **下载集成库**:需要...

    Struts2配置详解

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

    struts+spring+hibernate最新开发文档

    SSH整合的关键在于Spring,它可以协调Struts和Hibernate的工作,比如通过Spring的AOP实现事务管理,以及使用Spring的IoC容器管理Struts的Action和Hibernate的SessionFactory。`xwork_API.chm`提供了Struts2底层工作...

    WebWork 概述

    - IoC容器:管理组件生命周期,实现依赖注入。 WebWork2则构建于Xwork之上,主要负责处理HTTP的请求和响应,使用ServletDispatcher将HTTP请求映射到Action(业务层Action类)、session(会话)、application(应用...

    Java开发热门项目

    Spring的核心特性是依赖注入(Dependency Injection,DI),通过JavaBean属性实现Inversion of Control(IoC)容器,使开发者能够更加专注于业务逻辑而非基础设施。Spring的IoC容器允许对象间的依赖关系被外部定义,...

    struts2常用jar包

    2. **xwork-core.jar**:XWork是Struts2的前身,它的核心库被Struts2继承并使用。这个包包含了动作执行、类型转换、Ognl表达式等组件。 3. **ognl.jar**:Object-Graph Navigation Language(OGNL)是一个强大的...

    J2EE SSH所需的架包

    - `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类的依赖注入。 通过整合这三个框架,开发者可以构建一个灵活、...

Global site tag (gtag.js) - Google Analytics