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 Framework 5中构建的示例应用程序-Guru的初学者 您可以了解我的Spring Framework 5在线课程
spring-1 演示了使用setter方式及构造器方式创建bean,util:list标签创建集合,p标签简化配置 和依赖注入, 以及bean的autowire和继承与依赖,以及bean的作用域。 spring-2 演示了外部配置文件的引入(connection)...
Spring的简单介绍及反转控制和依赖注入的代码演示
最简单的示例Spring Dependency示例如何工作。 对于所有配置,都使用没有任何XML文件的注释。 描述 所有配置都在pooky.projects.AppConfig中 此类需要使用@Configuration进行注释 注释@ComponentScan将扫描并在pooky...
ippevent2015-youngblood 会议演示文稿 - 展示如何在 Spring 中使用类型安全依赖注入
Spring作为轻量级的控制反转(IoC)和面向切面编程(AOP)的容器框架,提供了依赖注入和事务管理等核心功能;Struts2是一个基于MVC设计模式的Web应用框架,负责处理请求和响应;Hibernate是一个对象关系映射(ORM)...
Spring框架简介:对Spring框架的基本概念进行介绍,包括依赖注入(DI)和面向切面编程(AOP)等核心特性,以及Spring的优点和在Java EE开发中的作用。 Spring IoC的控制反转实例:通过一个示例演示了使用Spring的...
该资源为本人博客文章“什么是SpringIOC?如何理解SpringIOC?”和“解析Spring DI 依赖注入的5种方式”中SpringOIC、DI演示案列文章工程代码,可下载学习!
spring依赖注入一个演示 Spring 依赖注入的程序。 一种带有注释,一种带有 xml 定义要执行该程序,请转到 pom.xml 文件所在的文件夹并运行以下命令: mvn clean install(获取所有必需的依赖项) mvn compile(编译...
该应用程序的目标是通过将其包装在一个简单的案例中来演示一个简单的端到端Spring Boot应用程序。 它有一个主要的API端点,可用于检查面试候选人和面试官之间的匹配可用性(假设各个参与方的可用性已预先存储在系统...
play20-spring-demo, 在播放 2.0应用程序中使用 spring 在播放 2.0应用程序中使用 spring的这是一个简单的应用程序演示如何将播放 2.0应用程序组件与 Spring Framework 应用程序集成。请注意,同样的技术可以应用到...
本部分代码仅仅提供一种功能演示,如果实际应用仍需进一步完善(建议使用一些成型的Ioc框架,例如Spring.net或Castle等)。经过改造后 的系统,组件间依赖关系如下图: 可以看出这次实现了真正的“针对接口编程”...
6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...
6.8.1. 在Spring中使用AspectJ进行domain object的依赖注入 6.8.2. Spring中其他的AspectJ切面 6.8.3. 使用Spring IoC来配置AspectJ的切面 6.8.4. 在Spring应用中使用AspectJ加载时织入(LTW) 6.9. 更多资源 7...
本套Spring教程基于Spring6讲解,Spring6是下一个十年的新开端。本套课程在录制时采用难度逐步递进的方式,从入门的第一个程序到手写Spring框架,真正的能够让小白成为老手。如果你是老程序员不妨看看手写Spring框架...
具有被动Swing视图和&Spring作为IoC框架的HMVP 层次模型–视图–演示者? 这只是一个简单的项目,展示了我如何在旧式富客户端应用程序中使用Swing和Spring上下文。 主要目标是在可能的情况下通过使用接口和依赖项...
嘶嘶弹簧该项目是探索几个依赖注入解决方案的系列之一。 它使用着名的演示了不同的方法。 这个特定的项目演示了如何使用的setter注入将FizzBuzz分解为较小的对象。
首先,这个在线购物系统是基于SSM框架进行后端开发,Spring用于依赖注入,SpringMVC用于处理请求,MyBatis用于操作数据库,这三者的结合使得整个系统的后端开发更加高效和稳定。 其次,前端部分采用了Vue.js进行...
spring 核心功能演示项目 1. applicationContext xml方式和注解方式配置 2. pring bean循环依赖。 3. spring bean 启动顺序。 4. BeanDefinition编程式注入到容器。 5. spring aop 打印 6. spring 事务
面向切面编程(AOP)完善spring的依赖注入(DI),面向切面编程在spring中主要表现为两个方面 1.面向切面编程提供声明式事务管理 2.spring支持用户自定义的切面 面向切面编程(aop)是对面向对象编程(oop)的...