`
yunj
  • 浏览: 15078 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

通过getter实现依赖注入

阅读更多
依赖注入是面向接口编程的前提,将对象的使用和对象的创建分离。使用者只需知道接口,而不必关心具体实现是哪个类。

例如:
public interface Job {
  public boolean doJob();
}

public class SweepJob {

  private int garbage = 10;

  public boolean doJbo() {
    System.out.println("扫地");
    garbage--;
    return garbage < 3;
  }
}

public class Worker {

  private Job job;

  public void work() throws Exception {
    while (!job.doJob()) {
      System.out.println("未完成,抱怨");
      Thread.sleep(100);
    }
  }
  
}


Worker依赖job,而不依赖SweepJob,但是Worker有必须取到一个SweepJob对象,这时就需要一个外部的容器来注入,Worker也要做相应的修改来接收注入。
1. 构造注入
public class Worker {

  private Job job;

  public Worker(Job job) {
    this.job = job;
  }
  ...
}

public class AppContext {
  
  private SweepJob job;
  private Worker worker;

  public void createBeans() {
    job = new SweepJob();
    worker = new Worker(job);
  }
}


2. setter注入
public class Worker {
  
  private Job job;

  public void setJob(Job job) {
    this.job = job;
  }
  ...
}

public class AppContext {
  
  private SweepJob job;
  private Worker worker;

  public void createBeans() {
    job = new SweepJob();
    worker = new Worker();
    worker.setJob(job);
  }
}


3. getter注入,也是写这篇日志的目的所在,今天看webx框架了解到的,感觉很有新意。
public abstruct class Worker {
  
  public abstruct Job getJob();
  
  public void work() throws Exception {
    while (!getJob().doJob()) {
      System.out.println("未完成,抱怨");
      Thread.sleep(100);
    }
  }
}

public class AppContext {
  
  private SweepJob job;
  private Worker worker;

  public void createBeans() {
    job = new SweepJob();
    worker = new Worker() {
      public Job getJob() {
        return job;
      }
    };
  }
}
分享到:
评论

相关推荐

    设计模式实验报告-依赖注入.docx

    通过本次实验,旨在帮助学生理解和掌握依赖注入的基本原理及其在实际开发中的应用,特别是如何利用Spring框架来实现依赖注入。 #### 二、实验环境与工具 - **开发工具**:Eclipse或IntelliJ IDEA - **开发语言**:...

    struts2 依赖注入boolean类型的属性时报错

    它主要通过Struts2的IoC(Inversion of Control)容器来实现,该容器负责管理对象的生命周期,并根据配置将依赖注入到对象中。在Struts2中,可以通过Action类的getter和setter方法来定义可注入的属性。当配置文件...

    Spring选择题(含答案).doc

    Spring 框架提供了多种方式来实现依赖注入,包括 getter 方法、setter 方法和自定义赋值方法。 A. getter 方法:通过 getter 方法来获取依赖对象。 B. setter 方法:通过 setter 方法来注入依赖对象,例如,在 ...

    spring的setter注入和构造注入(XML讲解以及常见错误)

    总结起来,Spring的setter注入和构造注入都是实现依赖注入的有效方式,选择哪种取决于具体场景。理解并熟练掌握这两种注入方式,对于编写健壮、可维护的Spring应用至关重要。同时,注意避免常见的配置错误,能提高...

    Spring的注入方式详解

    Spring 框架是 Java 开发中非常重要的一个组件,它提供了一种强大的依赖注入(Dependency Injection,简称 DI)机制,使得对象之间的依赖关系可以通过配置文件或者注解来管理,而不是硬编码在类的内部。这有助于提高...

    Ioc注入讲解

    综上所述,IoC容器是Java开发中非常重要的技术之一,它通过管理对象的创建和依赖注入,大大简化了代码结构,提高了程序的可读性和可维护性。了解和掌握IoC容器的原理及其实现方式,对于Java开发人员来说是非常必要的...

    java框架-Spring2复习题.docx

    - Spring的依赖注入通过setter注入、构造注入和接口注入来实现,但不包括getter注入。DI的主要目标是在代码之外管理组件间的依赖关系,促进松耦合。 - DI并非面向接口编程的同义词,但它通常与之结合使用,以实现...

    java框架-Spring2复习题.doc

    - Spring是一个轻量级的Java EE框架集合,实现了依赖注入模式,可以实现声明式事务管理,提供了AOP支持,包括日志系统。 8. **配置Hibernate事务管理器** - 在Spring中配置Hibernate事务管理器时,需要注入的属性...

    java框架-Spring2复习题.pdf

    - Spring框架提供了AOP的实现,支持通过setter、构造器、接口等方式进行依赖注入。 2. **事务隔离级别** - 事务隔离级别是由数据库系统实现的,旨在确保并发操作的正确性,防止数据不一致问题,如脏读、不可重读...

    java框架-Spring2复习题知识.pdf

    - 它是依赖注入模式的实现,允许声明式事务管理。 - Spring提供了AOP支持,包括日志系统。 8. **配置Hibernate事务管理器**: - 在Spring中,配置Hibernate事务管理器时,需要注入的属性名称通常是`...

    MVC 控制反转详解

    IOC 的实现通常通过依赖注入来完成,主要有以下几种方式: 1. **构造器注入**:依赖的对象作为构造函数的参数传递给类。这是一种强依赖注入,但可能会使构造函数变得复杂,尤其当有多个依赖时。 2. **属性注入**:...

    精品专题(2021-2022年收藏)java框架Spring2复习题.docx

    getter 注入不是 Spring 的依赖注入方式。 4. 在 Spring 框架中,面向方面编程(AOP)的目标在于( )。 正确答案:A.编写程序时不用关心其依赖组件的实现 解释:AOP 的目标是将程序中涉及的公用问题集中解决,...

    Laravel开发-laravel-rule-getter

    Laravel的服务容器允许依赖注入,`laravel-rule-getter`可能利用了这一点,使开发者能够轻松地在任何需要验证规则的地方注入并使用getter助手。 9. **单元测试** 对于这样一个工具,单元测试是必不可少的,确保每...

    Spring考试试卷 (2).pdf

    - Spring的依赖注入允许组件之间通过构造函数、setter方法或者接口实现依赖关系的建立,而不必在代码中硬编码。getter注入不是Spring推荐的注入方式,因为这违反了依赖反转原则。 4. **AOP的目标** - AOP的目标是...

    java框架Spring2复习题归纳.pdf

    通过Spring配置,可以创建SessionFactory实例,并通过依赖注入将SessionFactory注入到DataSource或DAO类中,避免在业务层直接实例化DAO。 6. **依赖注入的正确理解** - 依赖注入的目标是在代码之外管理组件间的...

    java框架Spring2复习题.pdf

    3. **Spring的依赖注入(DI)方式**:Spring支持多种依赖注入方式,包括setter注入和构造注入,但不包括getter注入和接口注入。选项B和C是错误的。 4. **AOP在Spring中的应用**:Spring的AOP主要用于解决公用问题,...

    spring练习及答案.docx

    Spring提供了一种声明式的方式,使得在业务层(Biz层)无需直接实例化DAO类,而是通过配置和依赖注入来使用DAO。这样可以简化代码,提高可测试性和可维护性。 Spring与Hibernate的集成是常见的Java EE应用实践。...

    Spring考试试卷.pdf

    - Spring可以通过XML或注解配置实现依赖注入,使得组件间的关系在运行时动态决定,降低了组件间的耦合。 11. Spring的上下文模块 - 上下文模块(ApplicationContext)为Spring提供了一个容器,用于管理和查找对象...

Global site tag (gtag.js) - Google Analytics