码迷,mamicode.com
首页 > 编程语言 > 详细

Spring学习总结(1.2)-依赖注入及配置了解

时间:2015-05-01 00:39:39      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

    前面的博客大概的讲了一下IOC容器的理解,那么IOC的实现实际上依托于依赖注入的。简单的说就是IOC是一种思想,而依赖注入为这种思想提供了实现。个人是这么理解的。本篇博客介绍两种常用的注入方式,以及他们的配置(基于XML)。

IOC容器说明

  从最近的学习来看,特别是基于XML的配置形式下。IOC容器就是一个生产线,它依据配置中类之间的持有关系,一个部件一个部件的组装成一个完整的产品去执行一个完整的任务。从使用者的方向上看,他只能看到一个入口,而之后的处理他是不知道的。当然,这在没有容器的概念的时候也是一样的。不一样的地方在于,容器是一个装配者只有它知道各个部分之间的关系,它负责将各个部分组合成一个完整的产品。大概是这么个意思:
技术分享

依赖注入

    前面说过控制反转,反转的是创建被调用者的功能被反转了,交给了IOC容器去处理。依赖注入是什么呢?它就是IOC将被调用者提供给调用者的途径。在运行的时候无需调用者自己创建被动用者,而是IOC容器像打针一样将被调用者注入到调用者中去。那么最常用的注入方式有两种:setter方法注入和构造函数注入。

setter方法

   即通过set方法注入Bean的属性值或者依赖对象。这种方式注入需要提供一个默认的不带参数构造函数。如果没有构造函数,JVM默认提供一个默认的无参构造函数。当自己写了构造函数时,由于JVM不再提供默认的构造函数,因此需要自己写一个不带参数的构造函数。否则抛出异常。

Car类

public class Car {


	private String company;
	private String brand;


	private int maxSpeed;
	private float price;
    public void setBrand(String brand){
	   this.brand = brand;
	}
	public void setMaxSpeed(int maxSpeed){
	    this.maxSpeed = maxSpeed;
	}
	
	public void setPrice(double price){
	    this.price = price;
	}
	
	public void setCompany(String company){
	    this.company = company;
	}
}

配置

<bean id = "car" class="com.tgb.spring.car">
    <property name ="brand"><value>迷你</value></property>
	<property name ="company"><value>宝马</value></property>
	<property name ="price"><value>220000</value></property>
	<property name ="maxSpeed"><value>200</value></property>
</bean>
    这种方式配置灵活简单,以上也能看出来。这里还需要提一点,通过set方法注入时Spring只会检查bean中是否存在对应的set方法而不会检查是否存在对应的变量。只是,良好的习惯起见,通常都定义变量。

构造函数

    通过构造函数的方式设置属性的值和依赖对象是除了set方法以为比较常用的方式了。这里需要提供有参数的构造函数。

car类

public class Car {


	private String company;
	private String brand;


	private int maxSpeed;
	private float price;


	public Car(String company, String brand, float price) {
		super();
		this.company = company;
		this.brand = brand;
		this.price = price;
	}


	public Car(String company, String brand, int maxSpeed) {
		super();
		this.company = company;
		this.brand = brand;
		this.maxSpeed = maxSpeed;
	}


	public Car(String company, String brand, int maxSpeed, float price) {
		super();
		this.company = company;
		this.brand = brand;
		this.maxSpeed = maxSpeed;
		this.price = price;
	}
}

配置

<bean id="car" class="com.atguigu.spring.helloworld.Car">
	<constructor-arg value="KUGA" index="1"></constructor-arg>
	<constructor-arg value="ChangAnFord" index="0"></constructor-arg>
	<constructor-arg value="250000" type="float"></constructor-arg>
</bean>
   这里首先大家注意到bean中有三个带参数的构造函数,另外一个需要注意的地方是配置中引入了index和type两个标签。这里通过你配置的参数个数、参数顺序、参数类型来精确定位你要使用的是哪一个构造函数。这个自己体会一下。

其他

    spring提供的配置功能是比较丰富的,处理基本的这些配置之外还有像,内部bean配置、自动装配等一些有趣的配置。
        

Spring学习总结(1.2)-依赖注入及配置了解

标签:

原文地址:http://blog.csdn.net/zhuojiajin/article/details/45403307

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!