程序员人生 网站导航

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

栏目:综合技术时间:2015-05-27 08:28:41
    前面的博客大概的讲了1下IOC容器的理解,那末IOC的实现实际上依托于依赖注入的。简单的说就是IOC是1种思想,而依赖注入为这类思想提供了实现。个人是这么理解的。本篇博客介绍两种经常使用的注入方式,和他们的配置(基于XML)。

IOC容器说明

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

依赖注入

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

setter方法

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

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>
    这类方式配置灵活简单,以上也能看出来。这里还需要提1点,通过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中有3个带参数的构造函数,另外1个需要注意的地方是配置中引入了index和type两个标签。这里通过你配置的参数个数、参数顺序、参数类型来精肯定位你要使用的是哪个构造函数。这个自己体会1下。

其他

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

最新技术推荐