初识Spring及打印机案例
Posted 婷好
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识Spring及打印机案例相关的知识,希望对你有一定的参考价值。
Spring框架
概述:Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好、易于测试、可重用的代码。
Spring 是轻量级的框架,其基础版本只有 2 MB 左右的大小。
一:IOC(Inversion of Control)
即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。
在传统的Java项目中,是通过一个类new另一个类的对象,将两个类进行关联,这样的话是程序主动去创建依赖对象,这样的话会导致类与类之间的高耦合,难于测式。
而IOC是把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,由这个容器来管理对象的生命周期和对象之间的关联关系,这样的话不但实现了对象之间的关联关系,所以对象与对象之间是 松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。
二:DI(Dependency Injection)
即“依赖注入”:IOC和DI在本质上来说是同一种东西,只不过IOC是一种设计理论,而DI则是一种实现。
组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台。通过依赖注入机制,我们只需要通过简单的配置,而无需任何代码就可指定目标需要的资源,完成自身的业务逻辑,而不需要关心具体的资源来自何处,由谁实现。
IoC的一个重点是在系统运行中,动态的向某个对象提供它所需要的其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现的
三、Spring使用初始案例
1、先在pom.xml文件中导入Spring依赖
2、创建项目实体类(一个类都是一个Bean)
StudentBean实体类
3、创建resources文件夹并创建applicationContext.xml文件
applicationContext.xml文件内容如下
4、Test测试类
5、运行结果如下
四、Spring域属性案例
1、在上个案例的基础上添加一个实体类Techer类
2、在StudentBean类中添加Techer对象
3、在applicationContext.xml中配置
4、Test测试类
5、运行结果如下
五、打印机案例
1、创建Ink墨盒接口并定义获取墨盒颜色的方法
package com.spring.Ink; /** * Ink墨盒接口 */ public interface Ink { //获取墨盒颜色 public String getInk(); }
2、分别创建彩色墨盒(ColorInk)和黑白墨盒(GrayInk)
package com.spring.Ink; import com.spring.Ink.Ink; public class ColorInk implements Ink { @Override public String getInk() { return "彩色"; } }
package com.spring.Ink; import com.spring.Ink.Ink; public class GrayInk implements Ink { @Override public String getInk() { return "黑白色"; } }
3、创建Paper纸张接口并定义获取纸张大小的方法
package com.spring.paper; public interface Paper { //获取纸张大小 public String getPaper(); }
4、分别创建A4(A4Paper)和B5(B5Paper)类
package com.spring.paper; public class A4Paper implements Paper { @Override public String getPaper() { return "A4"; } }
package com.spring.paper; public class B5Paper implements Paper { @Override public String getPaper() { return "B5"; } }
5、创建打印机类(Printer)
package com.spring.printer; import com.spring.Ink.Ink; import com.spring.paper.Paper; /** * 打印机类 */ public class Printer { //纸张对象 private Paper paper; //墨盒对象 private Ink ink; //打印的方法 public void print(){ System.out.println("你正在使用"+paper.getPaper()+"纸张和"+ink.getInk()+"墨盒打印信息!"); } public Paper getPaper() { return paper; } public void setPaper(Paper paper) { this.paper = paper; } public Ink getInk() { return ink; } public void setInk(Ink ink) { this.ink = ink; } }
6、applicationContext.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.xsd"> <!--注入彩色墨盒 Bean的注入都是实现类--> <bean id="colorink" class="com.spring.Ink.ColorInk"></bean> <bean id="grayInk" class="com.spring.Ink.GrayInk"></bean> <!--注入纸张 Bean的注入都是实现类--> <bean id="a4Paper" class="com.spring.paper.A4Paper"></bean> <bean id="b5Paper" class="com.spring.paper.B5Paper"></bean> <!--打印机类 将纸张和墨盒组合起来--> <bean id="printer" class="com.spring.printer.Printer"> <property name="ink" ref="colorink"></property> <property name="paper" ref="a4Paper"></property> </bean> </beans>
7、Test测试类
package com.spring.test; import com.spring.printer.Printer; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class PrinterText { public static void main(String[] args) { ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml"); Printer printer =(Printer) ctx.getBean("printer"); printer.print(); } }
8、运行结果如下
以上是关于初识Spring及打印机案例的主要内容,如果未能解决你的问题,请参考以下文章
初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段
ATP应用测试平台——关于网页表格的打印及PDF下载的实战案例