第二篇给类中的属性赋值(1)

  昨天算是开启了第一篇技术类的文章,第一篇就说Spring,有同学会问框架那么多为什么要说它呢?嘿!Spring门类的框架在同类型的框架里面可以说是最优秀的,目前各公司不论大小(除非是特别牛逼的自己写框架)基本上所有的新项目都在围绕着Spring全家桶转圈。它之所以优秀就在于它在很大限度上解决了代码过于冗余,以及耦合度高的问题,不论是盛极一时的SSH框架还是火遍所有互联网公司的SSM框架都少不了他的身影,当下又火起来的Spring Boot亦是基于Spring技术发展起来,所以,如果你想在java这条路上走的更远更深更久,那么我还是建议你深入的学习一下Spring框架。废话不说,下面是今天整理的干货。各位看官,看完觉得好还望您点个赞。

  本文章是博主原创,转载需注明出处。

1、setter注入

即依赖set方法注入值

xml文件的配置

   <bean id="star" class="com.zct.Star">

        <property name="age" value="56"/>

        <property name="name" value="刘德华"/>      

    </bean>

对应的类文件Star.java

    private int age;

    private String name;

    public void setAge(int age) {

        this.age = age;

    }

    public void setName(String name) {

        this.name = name;

    }
2、构造注入

即依赖构造器注入

xml文件

    <!-- 构造注入 -->

    <bean id="star1" class="com.zct.Star">

        <constructor-arg index="0" value="54"/>

        <constructor-arg index="1" value="黎明"/>

    </bean>

  <!-- 需注意基本类型与封装类不能直接转换 -->

    <bean id="star2" class="com.zct.Star">

        <constructor-arg type="int" value="53"/>

        <constructor-arg type="String" value="郭富城"/>

    </bean>

对应的类文件Star.java

    private int age;

    private String name;

    public Star(int age, String name) {

        super();

        this.age = age;

        this.name = name;

    }

无论是setter注入还是构造注入都是注入也就是给属性赋值,注入的英文缩写是DI(Dependency  Injection)。除了从注入方式上的差异还有注入的值的区分:基本类型、引用类型。

基本类型较为简单,即是上面所书写的方式,下面为是引用类型的注入

3、引用类型的注入

引用类型的注入一也有两中方式,一是用ref引入二是用内部<bean>标签

①、ref属性引入

xml文件:

    <!-- 基本类型 -->

    <bean id="star" class="com.zct.Star">

        <constructor-arg type="int" value="53"/>

        <constructor-arg type="String" value="刘德华"/>

    </bean>

    <!-- 非基本类型 -->

    <bean id="man" class="com.zct.Man">

        <property name="star" ref="star"/>

        <property name="liYou" value="能歌善舞长得又帅"/>

    </bean>

对应的类文件

Star.java

    private int age;

    private String name;

    public Star(int age, String name) {

        super();

        this.age = age;

        this.name = name;

    }

    public void show() {

        System.out.println("我是" + name + "年龄" + age);

    }

Man.java

    private Star star;

    private String liYou;

    public void setStar(Star star) {

        this.star = star;

    }

    public void setLiYou(String liYou) {

        this.liYou = liYou;

    }

    public void showLove() {

        System.out.println("我喜欢的明星是:");

        star.show();

        System.out.println("理由是:" + liYou);

    }

②内部<bena>标签

    <bean id="man" class="com.zct.Man">

        <property name="love">

            <bean id="love" class="com.zct.Love">   //内部<bean>的id可以省略

                <property name="view" value="吃喝"/>

                <property name="play" value="玩乐"/>

            </bean>

        </property>

        <property name="age" value="25"></property>

    </bean>
原文地址:https://www.cnblogs.com/CuSO4/p/8463215.html