spring的bean的属性4种注入和复杂属性注入简单介绍

文章自己学习使用,比较简单。


 属性在创建对象的时候给属性注入值。

1 属性注入之 setter方法:

  <!-- 使用set 方法注入属性 -->
      <bean id="propertyDemo2" class="com.springTest.serterTest.PropertyDemo1">
         <!-- 给userName和age注入值 -->
         <property name="userName" value="javaspring"></property>
         <property name="age" value="10"></property>
      </bean>
       <!-- 使用set 方法注入对象 -->
      <bean id="setterService" class="com.springTest.serterTest.SetterService">
         <!-- 属性注入 -->
          <property name="propertyDemo1" ref="propertyDemo2"></property>
      </bean>

   public class PropertyDemo1 {
     String userName ;
     String age;
     
public PropertyDemo1() {

}
public PropertyDemo1(String userName, String age) {
this.userName = userName;
this.age = age;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;

}

public class SetterService {


private PropertyDemo1 propertyDemo1;

public void setPropertyDemo1(PropertyDemo1 propertyDemo1) {
this.propertyDemo1 = propertyDemo1;
}


public void getUser(){

System.out.println(propertyDemo1.getAge()+"---"+propertyDemo1.getUserName());
}

2 属性注入之有参构造方法注入

 <bean id="propertyDemo1" class="com.springTest.property.PropertyDemo1">
         <constructor-arg name="name" value="王Java"></constructor-arg>
      </bean>

3  P名称空间注入

对setter方法简化 省去property  是p入约束 xmlns:p="http://www.spring

引framework.org/schema/p"

1普通属性 p:属性名称=“”

2对象属性 p:属性名称-ref=""

 <bean id="propertyDemo2" class="com.springTest.serterTest.PropertyDemo1" p:age="javaspring" p:userName="10"></bean>
       

<bean id="setterService" class="com.springTest.serterTest.SetterService" p:propertyDemo1-ref="propertyDemo2"></bean>

4、spel注入

property进行统一编码 property里面只需要两个属性 name  value

value的值 必须符合下面格式

常量 #{10}  字符串必须是‘’ #{''name}

#{beanid} 另一个bean的引用

#{beanid.propName}  操作数据

#{beanid.toString}   执行方法

#{T(类).字段|方法}  静态方法


<bean id="propertyDemo2" class="com.springTest.serterTest.PropertyDemo1" >
          <property name="userName" value="#{propertyDemo2.userName}"></property>
          <!--  z注入静态的-->
         <property name="age" value="#{T(java.lang.Math).PI}"></property>
      </bean>
       <bean id="setterService" class="com.springTest.serterTest.SetterService">
         <property name="propertyDemo1" value="#{propertyDemo2}"></property>
       </bean>

复杂数据的注入

    集合注入都是给<property >添加字标签

      数组:<array>

    list:<list>

    set:<set>

   map:<map> 使用K/V 使用entry

 properties: <props>  <prop key="s">value</prop>

 <!-- 创建service实例 并注入DAO 对象 -->
      <bean id="userServiceDao" class="com.springTest.service.impl.UserService">
        <property name="userDao" ref="userDao"></property>
         <!-- 数组 -->
        <property name="arrys">
          <list>
             <value>su</value>
              <value>"su"</value>
               <value>su2</value>
                <value>su3</value>
           </list>
        </property>
        <!-- list -->
        <property name="resultList">
          <list>
             <value>du</value>
              <value>"du"</value>
               <value>du2</value>
                <value>du3</value>
           </list>
        </property>
        
        <!-- Map -->
        <property name="resultMap">
           <map>
              <entry key="map1" value="map1"></entry>
              <entry key="map3" value="map3"></entry>
              <entry key="map2" value="map2"></entry>
           </map>
        </property>
        <property name="properties">
           <props>
               <prop key="driverclass">com.sql.jdbc.Driver</prop>
               <prop key="userName">root</prop>
           </props>
        </property>
     </bean>
     

  


猜你喜欢

转载自blog.csdn.net/qq_36697880/article/details/80848948
今日推荐