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使用BeanFactory或ApplicationContext作为容器,负责创建、管理和装配Bean。容器读取配置...
这个案例可能是通过一个简单的应用或示例来演示如何在Spring中实现依赖注入。 依赖注入的基本思想是,对象不应该负责创建它所依赖的对象,而是应该由外部容器(如Spring的ApplicationContext)来负责。这样可以降低...
《Spring 5依赖注入实战详解》 在Java开发领域,Spring框架无疑是最为广泛使用的轻量级框架之一,尤其在企业级应用开发中占据主导地位。Spring 5是其最新的版本,带来了诸多改进和新特性,其中依赖注入(Dependency...
为了演示AOP和依赖注入,压缩包中的"aop"可能是包含具体实现的Java源代码或者编译后的类文件。这些代码可能包括切面类、业务服务类、以及可能的DAO层实现。开发者可以通过查看这些代码来理解AOP如何在实际场景中工作...
总结起来,"反射与依赖注入DEMO"可能演示了如何在Java程序中利用反射动态操作类和对象,以及如何借助依赖注入框架(如Spring)来管理组件间的依赖关系,实现低耦合和高可扩展性。同时,接口的使用增强了代码的灵活性...
这个实现可能包含了XML配置文件、带有注解的Java类,以及一些测试用例,用于演示如何在没有Spring框架的情况下实现依赖注入和类扫描。通过研究这个实现,你可以进一步加深对这些概念的理解,并可能将其应用到自己的...
5. `@Autowired`:这是实现依赖注入的关键注解,Spring容器会自动找到类型匹配的Bean来注入。如果存在多个候选Bean,可以使用`@Qualifier`指定特定的Bean。 6. `@Value`:这个注解用于注入基本类型的值或从属性文件...
在本文中,我们将深入探讨Spring框架的核心概念——控制反转(Inversion of Control,IoC)和依赖注入(Dependency Injection,DI)。这些概念是Spring框架的基础,对于理解和掌握Spring的使用至关重要。 首先,让...
本文详细介绍了Spring框架的核心机制之一:依赖注入(Dependency Injection,简称DI)。依赖注入是Spring框架最重要的设计理念之一,它是一种用于实现控制反转(Inversion of Control,简称IoC)的技术,旨在减少...
spring-1 演示了使用setter方式及构造器方式创建bean,util:list标签创建集合,p标签简化配置 和依赖注入, 以及bean的autowire和继承与依赖,以及bean的作用域。 spring-2 演示了外部配置文件的引入(connection)...
Spring通过依赖注入(Dependency Injection, DI)来实现控制反转。 - **依赖注入 (DI)**: 是IoC的一种具体实现方式,通过构造器、setter方法或注解等方式将一个类的对象注入到另一个需要它的类中,从而实现依赖关系...
通过Spring的依赖注入(Dependency Injection,DI),`ExampleClass`可以在运行时自动获得`DependencyClass`的实例,无需手动创建。 为了运行这个demo,我们需要创建一个Spring容器并加载配置文件,然后从容器中...
在Java开发领域,Spring框架是不可或缺的一部分,尤其在控制反转(Inversion of Control,简称IOC)和依赖注入(Dependency Injection,简称DI)方面,它提供了强大的支持。本篇将深入探讨Spring框架中bean的几种...
这个项目的源码演示了如何使用SAXBuilder解析XML配置,然后模拟Spring的bean管理和依赖注入。通过学习和理解这个示例,你将能够更好地掌握Spring的XML配置原理,以及如何在不使用Spring框架的情况下,自行实现类似的...
Struts2和Spring2.5是两个非常流行的Java Web开发框架,它们分别专注于MVC(模型-视图-控制器)架构的实现和依赖注入及业务层管理。将这两个框架整合在一起,可以创建出功能强大、可扩展性好的企业级应用程序。下面...
在`01spring4_ioc1`和`04spring4_ioc3`文件中,可能包含的是如何定义Bean,配置Bean的属性,以及如何通过依赖注入(Dependency Injection,DI)来解耦代码。例如,XML配置文件中的`<bean>`标签,以及使用`@Component...
在提供的压缩包文件中,可能包含了一个简单的Spring 2.5应用,演示了如何使用自动扫描和自动注入。这通常包括以下几个部分: 1. 定义带有注解的bean类,如`@Component`或其子注解。 2. 使用`...
总的来说,"dependencyinjection:依赖注入的演示"项目将向我们展示如何在实际的Java应用中实施依赖注入,包括如何配置和使用Spring框架来管理对象的生命周期和依赖关系。通过学习和实践这个项目,我们可以深化对依赖...
测试代码可能会演示如何在Spring配置文件中声明bean,如何通过setter方法注入依赖,以及如何在测试中验证依赖注入的效果。这将帮助初学者理解Spring IOC的工作原理,以及如何在实际项目中应用这些概念。 总的来说,...
在给定的文件【标题】"Springjava.pdf"和【描述】"Springjava.pdf"中,我们可以看到这是一个关于Spring框架的Java编程示例,具体涉及到Spring的依赖注入(IoC)功能。Spring框架是Java领域内一个非常流行的开源框架...