spring简单demo——翻转
Spring 实例入门
本文结合实例理解解容器,DI,IOC,耦合,解耦等Spring所涉及的概念,同时了解Spring的最基本也是最核心的使用方法。
?
1. Spring容器 Spring容器负责对象的实例化,对象生命周期的管理,被Spring管理的对象称之为Bean。
?例如有Soldier类需要交由Spring容器管理,我们先编写类
package com.hb; public class Soldier {
? private String name;?
??public String getName() {?? return name;? }
? public void setName(String name) {?? this.name = name;
? }
}
?
?
在Spring配置文件中添加如下配置
<bean id="s1" scope="prototype"></bean>?
?
?
2. 注入方式有setter注入,构造注入方式,接口注入(不需掌握)。建议多使用Setter注入方式。
?
Setter注入:
Soldier类中有一个属性name,如何在创建Soldier的时候使name的值变为”RANBO”?
配置如下:
<bean? id="s1"? class="com.hb.HandGun"></bean>
?
测试:
ApplicationContext context = new? ClassPathXmlApplicationContext("applicationContext.xml"); Soldier s1 = (Soldier) context.getBean("s1");
s1.fight();
?
至此,我们使用Spring很好的解决了HandGun和Soldier的耦合问题。Soldier类中再也看不到HandGun的踪影了,Soldier只依赖于接口,而最终Soldier还是使用了HandGun,这是为什么呢?Spring在这里管理了单个的对象,也管理了对象之间即Soldier和HandGun的依赖关系。原本是由Soldier控制HandGun的实例化的,转变为由Spring容器来控制,这里发生了控制权的转移,这就是控制反转控制反转控制反转控制反转(Inversion of Control,简称IOC)。当Soldier需要HandGun时,Spring会自动将HandGun对象注入给Soldier,这就是依赖注入依赖注入依赖注入依赖注入了。?? 看一下你是否已经有所领悟了: 假如“手-枪“已经不满足“士兵”的需要,我们需要将“手-枪”更换为更先进的“机枪”,你的程序如何编写呢?自己试一下吧!!
?
?
?
?
?
?
?