• spring依赖注入


    spring依赖注入

    依赖注入定义:

    依赖注入(Dependency Injection):它使spring框架核心IOC的具体体现吗,是表示在应用程序中表示层与层之间,对象与对象之间的关系。简单的说就是给类的成员变量赋值。

    依赖注入的类型:

    构造方法注入:

    就是通过构造方法,给类的成员变量赋值

    构造方法注入类:

    public class ConstructorDaoImpl implements CustomerDao{
    
        // 类的成员变量
        private int id;
        private String name;
        private Integer age;
        private Date birthday;
    
        //构造方法
        public ConstructorDaoImpl(int id, String name, Integer age, Date birthday) {
            this.id = id;
            this.name = name;
            this.age = age;
            this.birthday = birthday;
        }
    
        /**
         * 保存客户操作
         */
        public void saveCustomer() {
            System.out.println("id="+id+",name="+name+",age="+age+",birthday="+birthday);
        }
    }
    

    配置bean.xml

     <bean id="constructDao" class="com.xt.dao.impl.ConstructorDaoImpl">
            <constructor-arg index="0" name="id" type="int" value="1" ></constructor-arg>
            <constructor-arg name="name" value="小明"></constructor-arg>
            <constructor-arg name="age" value="18"></constructor-arg>
            <constructor-arg name="birthday" ref="now"></constructor-arg>
        </bean>
    
        <!--配置java.util.Date-->
        <bean id="now" class="java.util.Date"></bean>
    

    标签说明:

    标签:
    constructor-arg:指定通过构造方法给成员变量赋值
    属性:
    index:成员变量在构造方法参数列表中的索引
    name:成员变量的名称(与index使用一个即可,实际项目中用的更多)
    type:成员变量的类型(默认即可)
    value:给java简单类型成员变量赋值(八种基本类型+字符串String)
    ref:给其他bean类型成员变量赋值

    setter方法注入:

    就是通过set方法,给类的成员变量赋值。

    set方法注入类

    public class SetDaoImpl implements CustomerDao{
    
        // 类的成员变量
        private int id;
        private String name;
        private Integer age;
        private Date birthday;
    
        //set方法
        public void setId(int id) {
            this.id = id;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
    
        /**
         * 保存客户操作
         */
        public void saveCustomer() {
            System.out.println("id="+id+",name="+name+",age="+age+",birthday="+birthday);
        }
    }
    

    配置bean.xml

    <bean id="setDao" class="com.xt.dao.impl.SetDaoImpl">
            <property name="id" value="2"></property>
            <property name="name" value="小花"></property>
            <property name="age" value="18"></property>
            <property name="birthday" ref="now"></property>
        </bean>
    
    <bean id="now" class="java.util.Date"></bean>
    

    标签属性说明:

    标签:
    property:指定通过set方法,给类的成员变量赋值
    属性:
    name:指定成员变量名称
    value:给java简单类型成员变量赋值(八种基本类型+字符串String)
    ref:给其他bean类型成员变量赋值

    依赖注入简化配置

    p名称空间注入

    就是原来的set方法注入,属性多,比较麻烦

    配置bean.xml

    <!--p名称空间注入,说明:
            第一步:导入p名称空间
                xmlns:p="http://www.springframework.org/schema/p"
            第二步:
                p:属性名称 ==>给java简单类型成员变量赋值
                p:属性名称-ref ==>给其他bean类型成员变量赋值
        -->
        <bean id="pDao" class="com.xt.dao.impl.SetDaoImpl"
            p:id="3" p:name="小王" p:age="18" p:birthday-ref="now"
        ></bean>
    

    c名称空间注入

    就是原来的构造方法注入

    <!--c名称空间注入,说明:
            第一步:导入c名称空间
                xmlns:c="http://www.springframework.org/schema/c"
            第二步:
                c:属性名称 ==>给java简单类型成员变量赋值
                c:属性名称-ref ==>给其他bean类型成员变量赋值
        -->
        <bean id="cDao" class="com.xt.dao.impl.ConstructorDaoImpl"
         c:id="4" c:name="小黄" c:age="18" c:birthday-ref="now"
        ></bean>
    

    集合属性的依赖注入

    对于类中的成员变量是简单类型或者是bean类型,已经通过上面的方式赋值了 ,那对于集合类型该怎么赋值呢/

    /**
     * 学习集合属性成员变量赋值
     */
    public class CollectionDaoImpl implements CustomerDao {
    
        // 集合类型成员变量
        private String[] array;
        private List<String> list;
        private Set<String> set;
    
        private Map<String,String> map;
        private Properties prop;
    
        //===========================================set方法
        public void setArray(String[] array) {
            this.array = array;
        }
    
        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;
        }
    
        public void setProp(Properties prop) {
            this.prop = prop;
        }
    
        /**
         * 保存客户操作
         */
        public void saveCustomer() {
            System.out.println(array !=null? Arrays.asList(array):"");
            System.out.println(list);
            System.out.println(set);
            System.out.println(map);
            System.out.println(prop);
        }
    }
    

    配置bean.xml

    <bean id="collectionDao" class="com.xt.dao.impl.CollectionDaoImpl">
            <!--array-->
            <property name="array">
                <array>
                    <value>array1</value>
                    <value>array2</value>
                </array>
            </property>
            <!--list-->
            <property name="list">
                <list>
                    <value>list1</value>
                    <value>list2</value>
                </list>
            </property>
            <!--set-->
            <property name="set">
                <set>
                    <value>set1</value>
                    <value>set2</value>
                </set>
            </property>
            <!--map-->
            <property name="map">
                <map>
                    <entry key="map-k1" value="map-v1"></entry>
                    <entry key="map-k2" value="map-v2"></entry>
                </map>
            </property>
            <!--prop-->
            <property name="prop">
                <props>
                    <prop key="prop-k1">prop-v1</prop>
                    <prop key="prop-k2">prop-v2</prop>
                </props>
            </property>
        </bean>
    

    标签属性说明:
    1.List结构:
    array/list/set
    2.Map结构:
    map/prop
    3.数据结构一致,标签可以互换

  • 相关阅读:
    git 常用命令
    centos 7 mini 安装
    python打印杨辉三角
    python 求100内的素数/质数
    字符串与bytes
    format
    Python字符串格式化
    数据结构
    ARM工作模式
    C语言实现字符串逆序输出
  • 原文地址:https://www.cnblogs.com/kt-ting/p/12572984.html
Copyright © 2020-2023  润新知