Spring学习笔记(二)Bean配置

来源:互联网 发布:淘宝店招牌怎么制作 编辑:程序博客网 时间:2024/06/06 01:05
一、Spring 配置Bean
1.1 依赖注入有两种办法
  1. 属性注入(设值注入)
  2. 构造器注入
1.2 构造器注入的小示例
创建一个对象,并提供一些构造器,覆写一下toString方法:
    package com.lbh.spring.beans;            public class Car {      private String brand;      private String corp;      private double price;      private int maxSpeed;      public Car(String brand, String corp, double price, int maxSpeed) {      super();      this.brand = brand;      this.corp = corp;      this.price = price;      this.maxSpeed = maxSpeed;      }      public Car(String brand, String corp, double price) {      super();      this.brand = brand;      this.corp = corp;      this.price = price;      }            @Override      public String toString() {            return "牌子:"+this.brand+"厂子:"+this.corp+"价格:"+this.price+"速度:"+this.maxSpeed;      }            }  

配置文件里面运用构造器注入配置如下:
    <!-- 通过构造器方法来配置 bean 的属性 -->      <bean id="car" class="com.lbh.spring.beans.Car">      <constructor-arg value="宝马" index="0"></constructor-arg>      <constructor-arg value="武汉" index="1"></constructor-arg>      <constructor-arg value="1000" index="2"></constructor-arg>      <constructor-arg value="200" index="3"></constructor-arg>      </bean>  

经过实验,如果不加index,那么注入过程按照由上到下的属性顺序进行;如果加上index那么按照index标号来,但如果对象中并没有相应的构造器方法,那么输出会报错。除了根据index判断,还可以根据type判断。
使用构造器注入,可以通过指定参数位置和类型,以区分重载的构造器
注:当Bean唯一时,可以通过getBean(Car.class);的形式获得该Bean对象,如果不唯一,则只能通过getBean("helloworld")的形式获取。
如:配置两个Car的Bean,用 getBean(Car.class);会报出:
    No qualifying bean of type 'com.lbh.spring.beans.Car' available: expected single matching bean but found 2: car,car2  


car和car2两个Bean的值故意设置不同,打印后发现两个Bean分别调用了Car方法的两个构造器,输出了两个Bean的属性信息,如下:

0 0
原创粉丝点击