Spring--5.bean管理 依赖注入(xml)

来源:互联网 发布:绑定域名和空间 编辑:程序博客网 时间:2024/06/06 12:51

1       java属性注入(三种方式)

 

       属性注入:创建对象时候,向类里面属性里面设置值

 

 java属性注入的方式介绍(三种方式)

(1)使用set方法注入

(2)使用有参数构造注入

(3)使用接口注入(不用)

 

3 在spring框架里面,支持前两种方式

(1)set方法注入(重点)

(2)有参数构造注入

 

2       Spring的属性注入

2.1  使用有参数构造注入属性

public classPropertyDemo1 {    private String username;    public PropertyDemo1(Stringusername) {      this.username = username;   }     public void test1() {      System.out.println("demo1.........."+username);   }}

2.1.1      参数的名字(重点)—name

<!-- 使用有参数构造注入属性 -->   <bean id="demo" class="spring.property.PropertyDemo1">      <!-- 使用有参构造注入 -->      <constructor-arg name="username" value="小王小马"></constructor-arg>   </bean> 

2.1.2      索引—index

       根据索引赋值,索引都是以0开头的:

<bean          id="memberBean"class="spring.property.Book">         <constructor-arg index="0"value="刘晓刚" />         <constructor-arg index="1"value="3500"/>         <constructor-arg index="2"ref="dept"/>         <constructor-arg index="3"value="男" />   </bean>
 

2.1.3      类型—type

       这种方法基本上不怎么适用,因为一个类里可以有好几个相同基本类型的变量,很容易就混淆值传给哪一个参数了所以做好不要使用这种方法:

<bean>    <constructor-arg type="Java.lang.String"value="刘晓刚"         <constructor-arg type="java.lang.Double"value="3500" />         <constructor-arg type="www.csdn.spring01.constructor.Dept"ref="dept"/>         <constructor-arg type="java.lang.String"value="男" />   </bean>        

2.1.4      直接传值

       直接给参数赋值,这种方法也是根据顺序排的,所以一旦调换位置的话,就会出现bug,这种方法已经很原始了

<bean> <constructor-arg  value="刘晓刚" />         <constructor-arg  value="3500" />         <constructor-arg  ref="dept"/>         <constructor-arg  value="男" /></bean><bean id="dept" class="www.csdn.spring01.constructor.Dept" >  <property name="dname" value="北航"/>  <property name="deptno" value="00001"/></bean>

2.2  使用set方法注入属性(重点)

public classBook {    private String bookname;   //set方法   public void setBookname(Stringbookname) {      this.bookname = bookname;   }     public void demobook() {      System.out.println("book..........."+bookname);   }}

 <!-- 使用set方法注入属性 -->   <bean id="book" class="spring.property.Book">      <!-- 注入属性值         name属性值:类里面定义的属性名称         value属性:设置具体的值    -->      <property name="bookname" value="易筋经"></property>   </bean>

3       注入类型

3.1  对象类型属性(重点)

1 创建service类和dao类

       在service得到dao对象;service里面得到dao类对象,才能调用dao里面的方法

 

2 具体实现过程

(1)在service里面把dao作为类型属性

(2)生成dao类型属性的set方法

(3)配置文件中注入关系

<!-- 注入对象类型属性 -->   <!-- 1 配置dao对象 -->   <bean id="userDao" class="spring.dao.UserDao"></bean>     <!-- 2配置service -->   <bean id="userService" class="spring.sevrvice.UserService">      <!-- 注入dao对象         name属性值:service类里面属性名称                                                现在不要写value属性,因为刚才是字符串,现在是对象         写ref属性:dao配置bean标签中id值    -->      <property name="userDao" ref="userDao"></property>   </bean>

 

3.2  null 值和级联属性

可以使用专用的<null/> 元素标签为 Bean 的字符串或其它对象类型的属性注入 null 值

和 Struts、Hiberante 等框架一样,Spring 支持级联属性的配置。

 

<null/>意义不大,

 

<bean id="car"class=" spring.beans.Car">        <property name="brand" value="BMW"/>        <property name="color" value="Black"/>        <property name="price" value="800000"/>        <property name="maxSpeed" value="200"/>    </bean>    <!-- 级联属性 -->    <bean id= "person3"class = "spring.beans.Person" >       <constructor-arg value= "杰瑞"></constructor-arg>       <constructor-arg value= "25"></constructor-arg>       <constructor-arg ref="car"></constructor-arg>           <!-- 为级联属性赋值,注意:属性必须先初始化后,才可以为级联属性赋值,否则会异常 -->           <property name="car.maxSpeed" value="300"></property>    </bean>

 

3.3  复杂类型属性

1 数组

2 list集合

3 map集合

4properties类型

<!-- 注入复杂类型属性值 -->   <bean id="person" class="spring.property.Person">      <!-- 数组 -->      <property name="arrs">         <list>            <value>小王</value>            <value>小马</value>            <value>小宋</value>         </list>      </property>
 <!-- list -->      <property name="list">         <list>            <value>小奥</value>            <value>小金</value>            <value>小普</value>         </list>              </property>
 <!-- map -->      <property name="map">         <map>            <entry key="aa" value="lucy"></entry>            <entry key="bb" value="mary"></entry>            <entry key="cc" value="tom"></entry>         </map>      </property>
<!-- properties --><property name="properties"><props><prop key="driverclass">com.mysql.jdbc.Driver</prop><prop key="username">root</prop></props></property>   </bean>

4       注入类型简化--P名称空间


pname为对象属性

 

原创粉丝点击