• spring的基于XML方式的属性注入


    1.掌握spring的属性注入的方法:

    1.1构造方法注入普通值---------<constructor-arg>标签的使用

    首先新建一个类

    package spring.day1.demo3;
    
    public class car {
    
        private String name;
        private double price;
    
        public car(String name, Double price) {
            this.name = name;
            this.price = price;
        }
    
        @Override
        public String toString() {
            return "car [name=" + name + ", price=" + price + "]";
        }
    
    }
    View Code

     在编写applicationContext2.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- =======================引入spring的关于bean的约束 ========================= -->
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:p="http://www.springframework.org/schema/p"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans 
            http://www.springframework.org/schema/beans/spring-beans.xsd">
        
        <!-- ================spring属性注入=============================== -->
        <!-- 构造方法注入 -->
        <bean id="car" class="spring.day1.demo3.car">
            <constructor-arg name="name" value="宝马"></constructor-arg>
            <constructor-arg name="price" value="500000"></constructor-arg>
        </bean>
        
    </beans>
    View Code

    在编写测试类SpringDemo3

    package spring.day1.demo3;
    
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class springDemo3 {
    
        @Test
        public void demo1() {
            ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext2.xml");
            car bean = (car) applicationContext.getBean("car");
            System.out.println(bean);
        }
    }
    View Code

    运行结果如下

    1.2set方法注入普通值和对象属性(ref的使用)------<property>标签的使用

    新建一个类car2

    package spring.day1.demo3;
    
    public class car2 {
    
        private String name;
        private double price;
        
        public void setName(String name) {
            this.name = name;
        }
        public void setPrice(double price) {
            this.price = price;
        }
        @Override
        public String toString() {
            return "car2 [name=" + name + ", price=" + price + "]";
        }
            
    }
    View Code

    新建一个Employee类

    package spring.day1.demo3;
    
    public class employee {
        private String name;
        private car2 car;
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void setCar(car2 car) {
            this.car = car;
        }
    
        @Override
        public String toString() {
            return "Employee [name=" + name + ", car=" + car + "]";
        }
    }
    View Code

    在applicationContext2.xml中加入以下

    <!-- set方法对car2注入普通值 -->
        <bean id="car2" class="spring.day1.demo3.car2">
            <property name="name" value="奔驰"></property>
            <property name="price" value="600000"></property>
        </bean>
        
        <!-- set方法注入对象 -->
        <bean id="employee" class="spring.day1.demo3.employee">
            <property name="name" value="张三"></property>
            <property name="car" ref="car2"></property>
        </bean>
    View Code

    在测试类SpringDemo3加入以下

    @Test
        public void demo2() {
            ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext2.xml");
            employee bean = (employee) applicationContext.getBean("employee");
            System.out.println(bean);
        }
    View Code

    运行截图如下

    1.3SPEL方式注入普通值和对象值(Spring3.0以后)

    SpEL:Spring Expression Language,Spring的表达式语言。

    语法格式:#{SPEL}

    新建一个类carInfo

    package spring.day1.demo3;
    
    public class carInfo {
        private String name;
        private double price;
    
        public String getName() {
            return "小三轮儿";
        }
    
        public double getPrice() {
            return Math.random()*1000;
        }
    
    }
    View Code

    修改applicationContext2.xml为如下

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- =======================引入spring的关于bean的约束 ========================= -->
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:p="http://www.springframework.org/schema/p"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="
            http://www.springframework.org/schema/beans 
            http://www.springframework.org/schema/beans/spring-beans.xsd">
    
        <!-- ================spring属性注入=============================== -->
        <!-- 构造方法注入 -->
        <bean id="car" class="spring.day1.demo3.car">
            <constructor-arg name="name" value="宝马"></constructor-arg>
            <constructor-arg name="price" value="500000"></constructor-arg>
        </bean>
    
        <!-- set方法对car2注入普通值 -->
        <!-- <bean id="car2" class="spring.day1.demo3.car2">
            <property name="name" value="奔驰"></property>
            <property name="price" value="600000"></property>
        </bean> -->
    
        <!-- set方法注入对象 -->
        <!-- <bean id="employee" class="spring.day1.demo3.employee">
            <property name="name" value="张三"></property>
            <property name="car" ref="car2"></property>
        </bean> -->
    
        <!-- SPEL方式 -->
        <bean id="carInfo" class="spring.day1.demo3.carInfo"></bean>
        
        <bean id="car2" class="spring.day1.demo3.car2">
            <property name="name" value="#{carInfo.name}"></property>
            <property name="price" value="#{carInfo.getPrice()}"></property>
        </bean>
    
    </beans>
    View Code

    在测试类SpringDemo3加入以下

    @Test
        public void demo3() {
            ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext2.xml");
            car2 bean = (car2) applicationContext.getBean("car2");
            System.out.println(bean);
        }
    View Code

    运行截图如下

     1.4P名称空间方式注入普通值和对象(Spring2.5以后)了解

    2.集合属性注入(了解)

    1.新建CollectionBean类

    2.在applicationContext2.xml中加入如下代码

    3.新建测试类测试

    <!-- =======================spring集合属性的注入============================ -->
        <bean id="collectionBean" class="zcc.spring.demo5.CollectionBean">
            <!-- 数组类型 -->
            <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>
            <!-- Set集合类型 -->
            <property name="set">
                <set>
                    <value>a</value>
                    <value>b</value>
                    <value>c</value>
                </set>                
            </property>
            <!-- Map集合类型 -->
            <property name="map">
                <map>
                    <entry key="数字" value="1"></entry>
                    <entry key="性别" value="男"></entry>
                </map>                
            </property>
        </bean>
    View Code
    package zcc.spring.demo5;
    
    import java.util.Arrays;
    import java.util.List;
    import java.util.Map;
    import java.util.Set;
    
    /*
     * 集合属性的注入
     */
    public class CollectionBean {
        private String []arrs;
        private List<String> list;
        private Set<String> set;
        private Map<String,String> map;
        public void setArrs(String[] arrs) {
            this.arrs = arrs;
        }
        public void setList(List<String> list) {
            this.list = list;
        }
        public void setSet(Set<String> set) {
            this.set = set;
        }
        public void setMap(Map<String, String> map) {
            this.map = map;
        }
        @Override
        public String toString() {
            return "CollectionBean [arrs=" + Arrays.toString(arrs) + ", list=" + list + ", set=" + set + ", map=" + map
                    + "]";
        }
        
    }
    View Code
    package zcc.spring.demo5;
    
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    /*
     * 集合类型的属性注入
     */
    public class SpringDemo5 {
    
        @Test
        public void demo1() {
            //创建spring的工厂来实例化xml中所有的bean对象
            ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
            CollectionBean bean = (CollectionBean) applicationContext.getBean("collectionBean");
            System.out.println(bean);
        }
        
    }
    View Code

  • 相关阅读:
    图解 PHP运行环境配置和开发环境的配置
    PHP学习笔记(2)语法和数据类型
    Jquery调用 新浪微博API 用户资料
    [转载]并行计算部分总结
    Qt QTreeWidget节点的添加+双击响应+删除详解
    C/C++中函数参数传递详解
    C语言预处理——宏定义
    cuda工程在VS中使用心得
    MPI用于矩阵乘积示例
    开到荼蘼花事了,永世相守孟婆桥
  • 原文地址:https://www.cnblogs.com/zengcongcong/p/10350692.html
Copyright © 2020-2023  润新知