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

来源:互联网 发布:资料员软件 编辑:程序博客网 时间:2024/06/02 20:44
    前面的博客大概的讲了一下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配置、自动装配等一些有趣的配置。
        
0 0
原创粉丝点击