`

Spring简单依赖注入演示

阅读更多
Spring的一大特点是利用配置的xml文件实现依赖注入。
所谓依赖注入是指把一个业务对象注入另一个业务对象,从而达到
对象间的松耦合。

下面我们来举个例子。

场景:现在有个磁盘输出的业务,客户端需要通过2个业务对象进行输出。
一个是通过Floppy(软盘),另一个是通过USB接口。

这样就需要2个业务类,但是如果不让客户端知道而实现简单的注入呢?

首先,由于有2种设备,软盘和USB,因此我们需要建立一个设备接口IDeviceWriter。
代码如下:
package spring.basic.BusinessFactory;

public interface IDeviceWriter {
	public void saveToDevice();
}



建立好设备接口后,我们便可以建立2个设备类,分别是软盘和USB来实现这个接口了。

软盘类代码如下:
package spring.basic.BusinessFactory;

public class FloppyWriter implements IDeviceWriter {
	public void saveToDevice() {
		System.out.println("储存至软盘…");
	}
}


USB类代码如下:
package spring.basic.BusinessFactory;

public class UsbDiskWriter implements IDeviceWriter {
	public void saveToDevice() {
		System.out.println("储存至移动硬盘…");
	}
}



接下来,我们需要建立一个磁盘业务的业务JavaBean类,我们简称它为BusinessBean。
该Bean有一个成员用于存放设备-writer。
然后有get,set方法和一个核心的保存方法。
BusinessBean代码如下:
package spring.basic.BusinessFactory;

public class BusinessBean {
	private IDeviceWriter writer;

	public void setDeviceWriter(IDeviceWriter writer) {
		this.writer = writer;
	}

	public IDeviceWriter getDeviceWriter() {
		return writer;
	}

	public void save() {
		if (writer == null) {
			throw new RuntimeException("DeviceWriter needed...");
		}
		writer.saveToDevice();
	}
}




业务类完成之后,我们便可以在配置文件中进行配置依赖关系了。
(注:bean依赖关键字是ref)

配置文件businessFactoryConfig.xml代码如下:
<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.springframework.org/schema/beans 
  http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

    <bean id="floppy" class="spring.basic.BusinessFactory.FloppyWriter"/>
    <bean id="usb" class="spring.basic.BusinessFactory.UsbDiskWriter"/>
       
    <bean id="businessBean" 
          class="spring.basic.BusinessFactory.BusinessBean"> 
        <property name="deviceWriter">
            <ref bean="floppy"/>
        </property> 
    </bean> 
</beans>


在上面的配置文件中,我们注入了floppy bean,我们也可以注入usb bean。


最后,我们写一下客户端代码,如下:
package spring.basic.BusinessFactory;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class SpringDemo {
	public static void main(String[] args) {
		ApplicationContext context = new ClassPathXmlApplicationContext(
		"businessFactoryConfig.xml");

		BusinessBean business = (BusinessBean) context.getBean("businessBean");
		
		business.save();
	}
}



运行一下,结果为:

储存至软盘…




分享到:
评论

相关推荐

    spring依赖注入三种方式 测试源码

    通过阅读和理解这些源码,你可以更深入地了解Spring依赖注入的工作原理及其在项目中的具体使用。 在进行依赖注入时,Spring使用BeanFactory或ApplicationContext作为容器,负责创建、管理和装配Bean。容器读取配置...

    Spring 简单案例(依赖注入)_02

    这个案例可能是通过一个简单的应用或示例来演示如何在Spring中实现依赖注入。 依赖注入的基本思想是,对象不应该负责创建它所依赖的对象,而是应该由外部容器(如Spring的ApplicationContext)来负责。这样可以降低...

    spring5-di-demo:Spring 5依赖注入演示

    《Spring 5依赖注入实战详解》 在Java开发领域,Spring框架无疑是最为广泛使用的轻量级框架之一,尤其在企业级应用开发中占据主导地位。Spring 5是其最新的版本,带来了诸多改进和新特性,其中依赖注入(Dependency...

    J2EE_Spring之AOP与依赖注入例子

    为了演示AOP和依赖注入,压缩包中的"aop"可能是包含具体实现的Java源代码或者编译后的类文件。这些代码可能包括切面类、业务服务类、以及可能的DAO层实现。开发者可以通过查看这些代码来理解AOP如何在实际场景中工作...

    反射与依赖注入DEMO

    总结起来,"反射与依赖注入DEMO"可能演示了如何在Java程序中利用反射动态操作类和对象,以及如何借助依赖注入框架(如Spring)来管理组件间的依赖关系,实现低耦合和高可扩展性。同时,接口的使用增强了代码的灵活性...

    使用xml和annotation实现类似spring依赖注入和自动扫描类的功能

    这个实现可能包含了XML配置文件、带有注解的Java类,以及一些测试用例,用于演示如何在没有Spring框架的情况下实现依赖注入和类扫描。通过研究这个实现,你可以进一步加深对这些概念的理解,并可能将其应用到自己的...

    Spring IOC Annotation 注入 学习实例

    5. `@Autowired`:这是实现依赖注入的关键注解,Spring容器会自动找到类型匹配的Bean来注入。如果存在多个候选Bean,可以使用`@Qualifier`指定特定的Bean。 6. `@Value`:这个注解用于注入基本类型的值或从属性文件...

    我的Pro Spring 学习笔记 之二 控制反转(IoC)和依赖注入(DI), Spring初步

    在本文中,我们将深入探讨Spring框架的核心概念——控制反转(Inversion of Control,IoC)和依赖注入(Dependency Injection,DI)。这些概念是Spring框架的基础,对于理解和掌握Spring的使用至关重要。 首先,让...

    详解Spring的核心机制依赖注入

    本文详细介绍了Spring框架的核心机制之一:依赖注入(Dependency Injection,简称DI)。依赖注入是Spring框架最重要的设计理念之一,它是一种用于实现控制反转(Inversion of Control,简称IoC)的技术,旨在减少...

    spring4示例代码

    spring-1 演示了使用setter方式及构造器方式创建bean,util:list标签创建集合,p标签简化配置 和依赖注入, 以及bean的autowire和继承与依赖,以及bean的作用域。 spring-2 演示了外部配置文件的引入(connection)...

    Spring基本知识点教程+案例演示

    Spring通过依赖注入(Dependency Injection, DI)来实现控制反转。 - **依赖注入 (DI)**: 是IoC的一种具体实现方式,通过构造器、setter方法或注解等方式将一个类的对象注入到另一个需要它的类中,从而实现依赖关系...

    一个简单的spring IOC演示demo

    通过Spring的依赖注入(Dependency Injection,DI),`ExampleClass`可以在运行时自动获得`DependencyClass`的实例,无需手动创建。 为了运行这个demo,我们需要创建一个Spring容器并加载配置文件,然后从容器中...

    java巩固练习Spring 的bean注入方式有几种demo例子

    在Java开发领域,Spring框架是不可或缺的一部分,尤其在控制反转(Inversion of Control,简称IOC)和依赖注入(Dependency Injection,简称DI)方面,它提供了强大的支持。本篇将深入探讨Spring框架中bean的几种...

    模拟spring的xml配置文件注入

    这个项目的源码演示了如何使用SAXBuilder解析XML配置,然后模拟Spring的bean管理和依赖注入。通过学习和理解这个示例,你将能够更好地掌握Spring的XML配置原理,以及如何在不使用Spring框架的情况下,自行实现类似的...

    Struts2 + Spring2.5 整合 视频演示 内有完整代码

    Struts2和Spring2.5是两个非常流行的Java Web开发框架,它们分别专注于MVC(模型-视图-控制器)架构的实现和依赖注入及业务层管理。将这两个框架整合在一起,可以创建出功能强大、可扩展性好的企业级应用程序。下面...

    spring相关的demo,包含spring的ioc注入,aop的使用,mybatis的整合(1).zip

    在`01spring4_ioc1`和`04spring4_ioc3`文件中,可能包含的是如何定义Bean,配置Bean的属性,以及如何通过依赖注入(Dependency Injection,DI)来解耦代码。例如,XML配置文件中的`&lt;bean&gt;`标签,以及使用`@Component...

    spring 2.5 IOC 自动扫描,自动注入

    在提供的压缩包文件中,可能包含了一个简单的Spring 2.5应用,演示了如何使用自动扫描和自动注入。这通常包括以下几个部分: 1. 定义带有注解的bean类,如`@Component`或其子注解。 2. 使用`...

    dependencyinjection:依赖注入的演示

    总的来说,"dependencyinjection:依赖注入的演示"项目将向我们展示如何在实际的Java应用中实施依赖注入,包括如何配置和使用Spring框架来管理对象的生命周期和依赖关系。通过学习和实践这个项目,我们可以深化对依赖...

    helloIoc.zip spring ioc控制反转简单测试代码

    测试代码可能会演示如何在Spring配置文件中声明bean,如何通过setter方法注入依赖,以及如何在测试中验证依赖注入的效果。这将帮助初学者理解Spring IOC的工作原理,以及如何在实际项目中应用这些概念。 总的来说,...

    Springjava.pdf

    在给定的文件【标题】"Springjava.pdf"和【描述】"Springjava.pdf"中,我们可以看到这是一个关于Spring框架的Java编程示例,具体涉及到Spring的依赖注入(IoC)功能。Spring框架是Java领域内一个非常流行的开源框架...

Global site tag (gtag.js) - Google Analytics