初学spring02-bean属性赋值与DI

给Bean的属性赋值(注入)

接上一章初学spring01

  1. 通过构造方法赋值

    • public People newInstance(){
      		return new People(19,"maoyan2",true);
      	}
      
    • <bean id="people1" class="com.catjava.pojo.People">
          	<constructor-arg index="0" name="years" type="int" value="18"></constructor-arg>
          	<constructor-arg index="1" name="name" type="String" value="maoyan"></constructor-arg>
          	<constructor-arg index="2" name="sex" type="boolean" value="1"></constructor-arg>
          </bean>
      
  2. 设置注入(set方法)

    • 先设置配置文件

      • <bean id="people4" class="com.catjava.pojo.People">
            	<property name="years">
            		<value>30</value>
            	</property>
            	<property name="name">
            		<value>maoyan3</value>
            	</property>
            	<property name="sex">
            		<value>true</value>
            	</property>
            </bean>
        
    • 在People类中的set方法中添加一行代码

      • public void setYears(int years) {
        		System.out.println("调用了set方法");
        		this.years = years;
        	}
        
    • 输出结果

      • 无参构造方法
        调用了set方法
        People [years=30, name=maoyan3, sex=true]

      很明显可以看出,设置注入的方法本质上是调用了People类的set方法

  3. 如果是其他属性,非基本属性,例如(Set List 数组 map Properties )

    1. 先在People中添加

      private Set<String> setsSet;
      private List<String> listsList;
      private String[] strings;
      private Map<String, String> mapsMap;
      private Properties properties;
      
    2. Set<?>

      • <!-- Set类型 -->
            	<property name="setsSet">
            		<set>
            			<value>01set</value>
            			<value>02set</value>
            			<value>03set</value>
            		</set>
            	</property>
        
    3. List<?>

      • <!-- List类型 -->
            	<property name="listsList">
            		<list>
            			<value>01list</value>
            			<value>02list</value>
            			<value>03list</value>
            		</list>
            	</property>
        
    4. 数组

      • <!-- 数组 -->
            	<property name="strings">
            		<array>
            			<value>01数组</value>
            			<value>02数组</value>
            			<value>03数组</value>
            		</array>
            	</property>
        
    5. Map<?,?>

      • <!-- Map类型 -->
            	<property name="mapsMap">
            		<map>
            			<entry key="01" value="map1"></entry>
            			<entry key="02" value="map2"></entry>
            			<entry key="03" value="map3"></entry>
            		</map>
            	</property>
        
      • 注意这里是entry

    6. Properties 类型

      • <!-- Properties 类型 -->
            	<property name="properties">
            		<props>
            			<prop key="01">properties1</prop>
            			<prop key="02">properties2</prop>
            			<prop key="03">properties3</prop>
            		</props>
            	</property>
        

DI(依赖注入)

  • 概念:当A类需要依赖B类时,把B类赋值给A类的过程,叫做依赖注入,即DI

  • 如:先创建一个GirlFriend类

    • 	private int years;
      	private String hobby;
      
    • set和get方法还有toString方法都省略了。

  • 再在配置文件中创建一个GirlFriend的Bean

     <!-- GirlFriend -->
        <bean id="grilfriend" class="com.catjava.pojo.GirlFriend">
        	<!-- 赋值进去 -->
        	<property name="years">
        		<value>18</value>
        	</property>
        	
        	<property name="hobby">
        		<value>play games</value>
        	</property>
        </bean>
    
  • 在People类和bean中都加入girlfriend

    private GirlFriend girlFriend;
    
    • 并实现set,get还有toString方法
    <!-- girlfriend类 -->
        	<property name="girlFriend" ref="grilfriend">
        	</property>
    
    • 这里的ref是调用别的bean所用到的,值为另一个bean的id值

输出结果:

无参构造方法
调用了set方法
People [years=30, name=maoyan3, sex=true, setsSet=[01set, 02set, 03set], listsList=[01list, 02list, 03list], strings=[01数组, 02数组, 03数组], mapsMap={01=map1, 02=map2, 03=map3}, properties={03=properties3, 02=properties2, 01=properties1}, girlFriend=GirlFriend [years=18, hobby=play games]]

发布了9 篇原创文章 · 获赞 5 · 访问量 792

猜你喜欢

转载自blog.csdn.net/iohappyoi/article/details/104717659