Spring学习(一)――Spring中的依赖注入简介(二)
river();
5 }
6 }
3. 运行结果:
1 我是奥迪车,我在进行挂档
2 我是奥迪车,我在进行踩油门
3 我是奥迪车,我在进行打方向盘
三、第二种情形:简单的依赖注入情形。
1. 分析如下:
在java的设计思想中,依赖注入的核心思想就是这种具体类之间的依赖,尽量转换成抽象依赖,也就是如下代码一样,Person类的依赖于抽象的Car类,而不是具体的Baoma类或者具体的AuDi类,分析见代码注释。
2. 代码如下:
1) Person.java
复制代码
1 public class Person {
2 private Car car;
3 public Person(Car car){//构造器注入,传入的是car,也就是一个所有车型都必须实现的接口
4 this.car =car;//这里可以响应奥迪,宝马等任何一种车的实现。
5 }//这里Person类没有与任何特定类型的车发生耦合,对于Person来说,任何一种特定的车,只需要实现Car接口即可。具体是哪一种车型,对Person来说无关紧要。
6 public void driver(){
7 car.GuaDang();
8 car.CaiYouMen();
9 car.DaFangXiang();
10 }
11 }
复制代码
2) Car.java
1 public interface Car {
2 public abstract void GuaDang();
3 public abstract void CaiYouMen();
4 public abstract void DaFangXiang();
5 }
3) AuDi.java
复制代码
1 public class AuDi implements Car {
2 public void GuaDang(){
3 System.out.println("我是奥迪车,我在进行挂档");
4 }
5 public void CaiYouMen(){
6 System.out.println("我是奥迪车,我在进行踩油门");
7 }
8 public void DaFangXiang(){
9 System.out.println("我是奥迪车,我在进行打方向盘");
10 }
11 }
复制代码
4) MainTest.java
复制代码
1 public class MainTest {
2 public static void main(String[] args){
3 AuDi audi=new AuDi();
4 Person boy =new Person(audi);
5 boy.driver();
6 }
7 }
复制代码
3. 运行结果:
1 我是奥迪车,我在进行挂档
2 我是奥迪车,我在进行踩油门
3 我是奥迪车,我在进行打方向盘
四、第三种情形:Spring的依赖注入情形。
1. 分析如下:
通过上面的说明,现在对于依赖注入应该有一个较好的理解了,那么Spring是如何实现IOC的?
通过依赖注入,对象的依赖关系将由负责协调系统中各个对象的第三方
组件在创建对象时设定。对象无需自行创建或管理它们的依赖关系——依赖关系将自动注入到需要它们的对像中去。Spring就是这样的第三方组件,通过使用Spring框架,使得类之间的依赖关系通过Spring来进行管理。
具体的Spring进行依赖注入的方式和方法有时间在进行学习总结,今天只是对于Spring依赖注入的理解学习。
2. 代码如下:
1)Person.java
复制代码
1 public class Person {
2 private Car car;
3 public Person(Car car){//构造器注入,传入的是car,也就是一个所有车型都必须实现的接口
4 this.car =car;//这里可以响应奥迪,宝马等任何一种车的实现。
5 }//这里Person类没有与任何特定类型的车发生耦合,对于Person来说,任何一种特定的车,只需要实现Car接口即可。具体是哪一种车型,对Person来说无关紧要。
6 public void driver(){
7 car.GuaDang();
8 car.CaiYouMen();
9 car.DaFangXiang();
10 }
11 }
复制代码
2) Car.java
1 public interface Car {
2 public abstract void GuaDang();
3 public abstract void CaiYouMen();
4 public abstract void DaFangXiang();
5 }
3) AuDi.java
复制代码
1 public class AuDi implements Car {
2 public void GuaDang(){
3 System.out.println("我是奥迪车,我在进行挂档");
4 }
5 public void CaiYouMen(){
6 System.out.println("我是奥迪车,我在进行踩油门");
7 }
8 public void DaFangXiang(){
9 System.out.println("我是奥迪车,我在进行打方向盘");
10 }
11
12 }
复制代码
4) cartest.xml
复制代码
1 < xml version="1.0" encoding="UTF-8" >
2
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns:p="http://www.springframework.org/schema/p"
5 xmlns:context="http://www.springframework.org/schema/context"
6 xsi:schemaLocation="http://www.springframework.org/schema/beans
7 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
8 http://www.springframework.org/schema/context
9