2、Spring4之Bean的两种配置方式

Java对象属性的配置方式:setter注入与构造器注入
本文介绍了Java对象属性配置的两种常见方式:通过setter方法进行注入和通过构造器进行初始化。详细解释了如何在Bean中为属性提供setter方法,并在配置文件中使用property注入属性。同时,也阐述了构造器注入的特点,包括如何提供多个构造器以适应不同需求,以及如何在配置文件中使用constructor-arg节点来指定使用哪个构造器。
1. Bean 属性的配置方式

     1). setter 方法注入(最常用的方式)

          ①. 在 Bean 中为属性提供 setter 方法:

          public void setBrand(String brand) {
               this.brand = brand;
          }

          public void setCorp(String corp) {
               this.corp = corp;
          }

          public void setPrice(float price) {
               this.price = price;
          }

          public void setMaxSpeed(int maxSpeed) {
               this.maxSpeed = maxSpeed;
          }

        ②. 在配置文件中使用 property 注入属性值

          <bean id="car" class="com.atguigu.spring.ioc.Car">
               <property name="brand" value="Audi"></property>
               <property name="corp" value="一汽"></property>
               <property name="maxSpeed" value="200"></property>
               <property name="price" value="200000"></property>
          </bean>

     2). 构造器注入:

          ①. bean 中提供构造器:

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

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

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

          ②. 配置文件中使用 constructor-arg 节点配置使用构造器注入属性值

          <bean id="car2" class="com.atguigu.spring.ioc.Car">
               <constructor-arg value="Ford"></constructor-arg>
               <constructor-arg value="ChangAn"></constructor-arg>
               <constructor-arg value="250000"></constructor-arg>
               <constructor-arg value="190"/>
          </bean>

          ③. 注意:对于重载的构造器可以通过参数的类型来匹配对应的构造器


          <bean id="car3" class="com.atguigu.spring.ioc.Car">
               <constructor-arg value="Buike"></constructor-arg>
               <constructor-arg value="ShanghaiTongYong"></constructor-arg>
               <constructor-arg value="180000"></constructor-arg>
          </bean>

          <!-- 
               因为有重载的构造器:
               public Car(String brand, String corp, float price)
               public Car(String brand, String corp, int maxSpeed)
        所以必须指定使用哪一个构造器来初始化属性值. 可以使用构造器参数的类型来选择需要的构造器!
          -->

          解决办法
          <bean id="car4" class="com.atguigu.spring.ioc.Car">
               <constructor-arg value="Nissan"></constructor-arg>
               <constructor-arg value="Zhengzhou"></constructor-arg>
               <constructor-arg value="210" type="int"></constructor-arg>
          </bean>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值