• Spring框架学习(二)


    一、Spring IOC参数值注入                                    

    1.注入基本值                                                                              

    1.1)<value></value>元素可以通过字符串指定属性或构造参数的值。容器将字符串从java.lang.String类型转换为实际的属性或者参数类型后给bean对象注入。

        <bean id="dataSource" class="com.spring.dao.JDBCDataSource">
                <property name="username" value="root">
              <value>root</value>
           </
    property> <property name="password">
              <value>123456</value>
           </
    property> </bean>

    1.2)也可以通过value属性指定基本值

    <property name="username" value="root"></property>
    <property name="password" value=""></property>

    1.3)新建一个类MessageBean

    package com.spring.dao;
    
    import java.util.List;
    import java.util.Map;
    import java.util.Properties;
    import java.util.Set;
    
    public class MessageBean {
        private String name;
        private String password;
        private String phone;
        private String gender;
        private List<String> list;
        private Set<String> set;
        private Map<String,Object>map;
        private Properties properties;
        
        public List<String> getList() {
            return list;
        }
        public void setList(List<String> list) {
            this.list = list;
        }
        public Set<String> getSet() {
            return set;
        }
        public void setSet(Set<String> set) {
            this.set = set;
        }
        public Map<String, Object> getMap() {
            return map;
        }
        public void setMap(Map<String, Object> map) {
            this.map = map;
        }
        public Properties getProperties() {
            return properties;
        }
        public void setProperties(Properties properties) {
            this.properties = properties;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        public String getPhone() {
            return phone;
        }
        public void setPhone(String phone) {
            this.phone = phone;
        }
        public String getGender() {
            return gender;
        }
        public void setGender(String gender) {
            this.gender = gender;
        }
        public void excute(){
            System.out.println("name="+name);
            System.out.println("password="+password);
            System.out.println("phone="+phone);
            System.out.println("gender="+gender);
    }
    }

    1.4)在配置文件添加

     <!-- 参数值注入 -->
             <bean id="messageBean" class="com.spring.dao.MessageBean">
                 <property name="name" value="zhangsan"></property>
                 <property name="password" value="123456"></property>
                 <property name="phone" value="110"></property>
                 <property name="gender" value="男"></property>
    </bean>

    1.5)在测试方法添加testMessageBean()方法

        @Test
        public void testMessageBean(){
            String con ="applicationContext.xml";
            ApplicationContext ac = new ClassPathXmlApplicationContext(con);
            MessageBean mb = ac.getBean("messageBean",MessageBean.class);
            mb.excute();
        }

    1.6)控制台输出

    name=zhansgan
    password=123456
    phone=110
    gender=男

    说明值注入成功

    2.注入集合

    通过<list></list>,<set></set>,<map></map>,<properties></properties>元素可以定义和设置与java类型中

    对应的list,set,map,properties属性值

    2.1)在MessageBean中添加代码

    private List<String> list;
        private Set<String> set;
        private Map<String,Object>map;
        private Properties properties;
        
        public List<String> getList() {
            return list;
        }
        public void setList(List<String> list) {
            this.list = list;
        }
        public Set<String> getSet() {
            return set;
        }
        public void setSet(Set<String> set) {
            this.set = set;
        }
        public Map<String, Object> getMap() {
            return map;
        }
        public void setMap(Map<String, Object> map) {
            this.map = map;
        }
        public Properties getProperties() {
            return properties;
        }
        public void setProperties(Properties properties) {
            this.properties = properties;
        }
            System.out.println("----------------list信息-----------------");
            /*
             * list集合
             */
            for(String s:list){
                System.out.println(s);
            }
            System.out.println("-----------------set信息------------------");
            /*
             * set集合
             */
            for(String s:set){
                System.out.println(s);
            }
            System.out.println("-------------------map信息------------------");
            /*
             * 循环key取出map value值
             */
            Set<String> key = map.keySet();
            for(String s:key){
                System.out.println(s+"="+map.get(s));
            }
            System.out.println("--------------------properties信息--------------");
            /*
             * properties
             */
            Set<Object> set = properties.keySet();
            for(Object o:set){
                System.out.println(o+"="+properties.getProperty(o.toString()));
            }

    2.2)在配置文件中添加

     <!-- 参数值注入 -->
             <bean id="messageBean" class="com.spring.dao.MessageBean">
                 <property name="name" value="lizhang"></property>
                 <property name="password" value="123456"></property>
                 <property name="phone" value="15256597951"></property>
                 <property name="gender" value="男"></property>
                 <property name="list">
                     <list>
                         <value>zhangsan</value>
                         <value>lisi</value>
                         <value>wangwu</value>
                     </list>
                 </property>
                 <property name="set">
                     <set>
                         <value>java</value>
                         <value>php</value>
                         <value>c</value>
                     </set>
                 </property>
                 <property name="map">
                     <map>
                         <entry key="100" value="张三"></entry>
                         <entry key="101" value="李四"></entry>
                         <entry key="102" value="王五"></entry>
                     </map>
                 </property>
                 <property name="properties">
                     <props>
                         <prop key="name">admin</prop>
                         <prop key="password">123456</prop>
                     </props>
                 </property>
             </bean>

    2.3)在测试方法执行testMesageBean方法,控制台输出

    name=zhansgan
    password=123456
    phone=110
    gender=男

    ----------------list信息-----------------
    zhangsan
    lisi
    wangwu
    -----------------set信息------------------
    java
    php
    c
    -------------------map信息------------------
    100=张三
    101=李四
    102=王五
    --------------------properties信息--------------
    name=admin
    password=123456

    说明注入集合成功

    3.引用方式集合注入

    3.1在配置文件添加下面配置

    引用方式集合注入配置格式:

    <util:list id=""><value></value></util:list>,

    <util:set id=""><value></value></util:set>

    <util:map id=""><value></value><util:map>

    <util:properties id=""><value></value></util:properties>

    <!-- 定义集合bean -->
                 <util:list id="list">
                     <value>华为</value>
                     <value>苹果</value>
                     <value>三星</value>
                 </util:list>
                 
                 <util:set id="set">
                     <value>华硕</value>
                     <value>联想</value>
                     <value>微星</value>
                 </util:set>
                 
                 <util:map id="map">
                     <entry key="1" value="中国"></entry>
                     <entry key="2" value="美国"></entry>
                     <entry key="3" value="德国"></entry>
                 </util:map>
                 
                 <util:properties id="properties">
                     <prop key="name">root</prop>
                     <prop key="password">123456</prop>
                 </util:properties>
                 <!-- 引用方式注入集合属性 -->
                 <bean id="message2" class="com.spring.dao.MessageBean">
                     <property name="list" ref="list"></property>
                     <property name="set" ref="set"></property>
                     <property name="map" ref="map"></property>
                     <property name="properties" ref="properties"></property>
                 </bean>

    3.2)在测试方法中添加testMessageBean2()方法

        @Test
        public void testMessageBean2(){
            String con = "applicationContext.xml";
            ApplicationContext ac = new ClassPathXmlApplicationContext(con);
            MessageBean mb = ac.getBean("message2",MessageBean.class);
            mb.excute();
        }

    3.3)控制台输出一下信息,引用方式集合注入成功

    ----------------list信息-----------------
    华为
    苹果
    三星
    -----------------set信息------------------
    华硕
    联想
    微星
    -------------------map信息------------------
    1=中国
    2=美国
    3=德国
    --------------------properties信息--------------
    name=root
    password=123456

    4.利用Spring表达式注入属性值

    Spring引入了一种表达式语言,语法上和EL表达式很相似,这种表达式语言可以用于定义基于xml和注解配置的bean,注入一个properties文件信息

    4.1) src下新建一个db.properties文件,在文件里写入

    name=root123
    
    password=123456

    4.2)修改配置文件为以下(name="name" ,"name"要和messageBean里属性名一致 private String name;)

    <util:properties id="properties" location="classpath:db.properties">
                 </util:properties>
                 <!-- 引用方式注入集合属性 -->
                 <bean id="message2" class="com.spring.dao.MessageBean">
                     <property name="name" value="#{properties.name}"></property>
                     <property name="password" value="#{properties.password}"></property>
    </bean>

    4.3)在测试类中执行testMessageBean2方法,控制台输出

    说明利用表达式注入属性值成功

    这个人不懒,写了一点东西
  • 相关阅读:
    第七次会议记录
    第六次会议记录
    高老师有点可爱队 Alpha冲刺阶段博客目录
    开心括号(栈)
    Codeforces Round #696 (Div. 2)
    OLE和TLE的不同
    Educational Codeforces Round 102 (Rated for Div. 2)
    关于位运算新知
    牛客小白月赛31
    关于cin和getline读入字符串
  • 原文地址:https://www.cnblogs.com/AnonymouL/p/6050626.html
Copyright © 2020-2023  润新知