zoukankan      html  css  js  c++  java
  • Spring学习总结四——SpringIOC容器四

    一:spring容器给bean对象注入属性值

    1:注入基本属性值

    a. 创建MessageBean类:

     1 /**
     2  * 
     3  */
     4 package com.hlcui.dao;
     5 
     6 /**
     7  * @author Administrator
     8  * 
     9  */
    10 public class MessageBean {
    11     private String name;
    12 
    13     private int age;
    14 
    15     private double salary;
    16 
    17     public String getName() {
    18         return name;
    19     }
    20 
    21     public void setName(String name) {
    22         this.name = name;
    23     }
    24 
    25     public int getAge() {
    26         return age;
    27     }
    28 
    29     public void setAge(int age) {
    30         this.age = age;
    31     }
    32 
    33     public double getSalary() {
    34         return salary;
    35     }
    36 
    37     public void setSalary(double salary) {
    38         this.salary = salary;
    39     }
    40     
    41     public String execute() {
    42         System.out.println("name=" + name + "
    age=" + age 
    43                 + "
    salary=" + salary);
    44         return "success";
    45     }
    46 
    47 }

    b. 在spring容器配置文件中配置MessageBean对象核心代码:

    1 <!-- 配置MessageBean对象 -->
    2     <bean id="messageBean" class="com.hlcui.dao.MessageBean">
    3         <property name="name" value="Jack"></property>
    4         <property name="age" value="27"></property>
    5         <property name="salary" value="12000"></property>
    6     </bean>

    或者将value元素作为property元素的子元素,效果是一样的

     1 <bean id="messageBean" class="com.hlcui.dao.MessageBean">
     2         <property name="name">
     3             <value>Tom</value>
     4         </property>
     5         <property name="age">
     6             <value>27</value>
     7         </property>
     8         <property name="salary">
     9             <value>12000</value>
    10         </property>
    11     </bean>

    c. 运行测试方法

    1 @Test
    2     public void testBaseInject(){
    3         ApplicationContext ac = getApplicationContext();
    4         MessageBean mb = ac.getBean("messageBean", MessageBean.class);
    5         mb.execute();
    6     }

    通过运行结果可知属性值已经注入到对象中,这种方式在前面已经总结过,就是setter注入。

    2:注入集合属性值(List、Set、Map、Properties)

    修改MessageBean类:

      1 /**
      2  * 
      3  */
      4 package com.hlcui.dao;
      5 
      6 import java.util.Iterator;
      7 import java.util.List;
      8 import java.util.Map;
      9 import java.util.Properties;
     10 import java.util.Set;
     11 import java.util.Map.Entry;
     12 
     13 /**
     14  * @author Administrator
     15  * 
     16  */
     17 public class MessageBean {
     18     private List<String> someList;
     19     private Set<Integer> someSet;
     20     private Map<String,Object> someMap;
     21     private Properties props;
     22     
     23     private String name;
     24 
     25     private int age;
     26 
     27     private double salary;
     28     
     29     
     30     public List<String> getSomeList() {
     31         return someList;
     32     }
     33 
     34     public void setSomeList(List<String> someList) {
     35         this.someList = someList;
     36     }
     37 
     38     public Set<Integer> getSomeSet() {
     39         return someSet;
     40     }
     41 
     42     public void setSomeSet(Set<Integer> someSet) {
     43         this.someSet = someSet;
     44     }
     45 
     46     public Map<String, Object> getSomeMap() {
     47         return someMap;
     48     }
     49 
     50     public void setSomeMap(Map<String, Object> someMap) {
     51         this.someMap = someMap;
     52     }
     53 
     54     public Properties getProps() {
     55         return props;
     56     }
     57 
     58     public void setProps(Properties props) {
     59         this.props = props;
     60     }
     61 
     62     public String getName() {
     63         return name;
     64     }
     65 
     66     public void setName(String name) {
     67         this.name = name;
     68     }
     69 
     70     public int getAge() {
     71         return age;
     72     }
     73 
     74     public void setAge(int age) {
     75         this.age = age;
     76     }
     77 
     78     public double getSalary() {
     79         return salary;
     80     }
     81 
     82     public void setSalary(double salary) {
     83         this.salary = salary;
     84     }
     85     
     86     public String execute() {
     87         System.out.println("name=" + name + "
    age=" + age 
     88                 + "
    salary=" + salary);
     89         System.out.println("--------List集合结果--------");
     90         for(String str:someList){
     91             System.out.println(str);
     92         }
     93         System.out.println("--------Set集合结果--------");
     94         for(Iterator<Integer> it = someSet.iterator();it.hasNext();){
     95             System.out.println(it.next());
     96         }
     97         System.out.println("-------Map集合结果--------");
     98         for(Entry<String, Object> entry:someMap.entrySet()){
     99             String key = entry.getKey();
    100             String value = (String) entry.getValue();
    101             System.out.println(key+"=="+value);
    102         }
    103         System.out.println("-------Properties结果------");
    104         for(Object obj : props.keySet()){
    105             String value = props.getProperty((String) obj);
    106             System.out.println(obj+"=="+value);
    107         }
    108         return "success";
    109     }
    110 
    111 }

    配置文件修改如下:

     1 <bean id="messageBean" class="com.hlcui.dao.MessageBean">
     2         <property name="name">
     3             <value>Tom</value>
     4         </property>
     5         <property name="age">
     6             <value>27</value>
     7         </property>
     8         <property name="salary">
     9             <value>12000</value>
    10         </property>
    11         <property name="someList">
    12             <list>
    13                 <value>aaaaList</value>
    14                 <value>bbbbList</value>
    15                 <value>ccccList</value>
    16             </list>
    17         </property>
    18         <property name="someSet">
    19             <set>
    20                 <value>111</value>
    21                 <value>222</value>
    22                 <value>333</value>
    23             </set>
    24         </property>
    25         <property name="someMap">
    26             <map>
    27                 <entry key="1" value="java"></entry>
    28                 <entry key="2" value="c++"></entry>
    29                 <entry key="3" value="c#"></entry>
    30             </map>
    31         </property>
    32         <property name="props">
    33             <props>
    34                 <prop key="username">root</prop>
    35                 <prop key="password">root</prop>
    36             </props>
    37         </property>
    38     </bean>
    39     

    运行测试方法:

    从结果可以看出,参数注入成功!!!

    3:引用方式注入集合属性

    修改配置文件内容如下:

     1 <util:list id="someList">
     2         <value>aaaaList</value>
     3         <value>bbbbList</value>
     4         <value>ccccList</value>
     5     </util:list>
     6     <util:set id="someSet">
     7         <value>111</value>
     8         <value>222</value>
     9         <value>333</value>
    10     </util:set>
    11     <util:map id="someMap">
    12         <entry key="1" value="java"></entry>
    13         <entry key="2" value="c++"></entry>
    14         <entry key="3" value="c#"></entry>
    15     </util:map>
    16     <util:properties id="props">
    17         <prop key="username">root</prop>
    18         <prop key="password">root</prop>
    19     </util:properties>
    20     <bean id="messageBean" class="com.hlcui.dao.MessageBean">
    21         <property name="name">
    22             <value>Tom</value>
    23         </property>
    24         <property name="age">
    25             <value>27</value>
    26         </property>
    27         <property name="salary">
    28             <value>12000</value>
    29         </property>
    30         <property name="someList" ref="someList"></property>
    31         <property name="someSet" ref="someSet"></property>
    32         <property name="someMap" ref="someMap"></property>
    33         <property name="props" ref="props"></property>
    34 </beans>

    运行测试方法:

    和之前的效果是一样的,只不过这样配置更加明了!

    二:利用spring表达式注入属性值

    1:在src下添加文件user.properties,内容如下:

    1 name=Jack
    2 age=30
    3 salary=15000

    2:在spring容器配置文件中加载配置文件

    1 <!-- 加载配置文件user.properties -->
    2     <util:properties id="user" location="classpath:user.properties"/>
    3     
    1 <!-- 配置MessageBean对象 -->
    2     <bean id="messageBean" class="com.hlcui.dao.MessageBean">
    3         <property name="name" value="#{user.name}"></property>
    4         <property name="age" value="#{user.age}"></property>
    5         <property name="salary" value="#{user.salary}"></property>
    6     </bean>

    3:运行测试方法

    通过结果可知spring表达式注入成功!

    三:spring注入空值

    1:修改配置文件

    1 <!-- 配置MessageBean对象 -->
    2     <bean id="messageBean" class="com.hlcui.dao.MessageBean">
    3         <property name="name">
    4             <null/>
    5         </property>
    6         <property name="age" value="#{user.age}"></property>
    7         <property name="salary" value="#{user.salary}"></property>
    8     </bean>

    2:运行测试方法

    空值注入成功,只有引用数据类型才可以注入空值!

  • 相关阅读:
    包含了访问命名服务的类和接口
    JNDI架构提供了一组标准的独立于命名系统的API
    利用JNDI的命名与服务功能来满足企业级API对命名与服务的访问
    JNDI(Java Naming and Directory Interface,Java命名和目录接口)
    Servlet 国际化
    重要的调试技巧
    使用 JDB 调试器
    Servlet 调试
    Servlet 打包部署
    编译包中的 Servlet
  • 原文地址:https://www.cnblogs.com/warrior4236/p/6055856.html
Copyright © 2011-2022 走看看