嘀嘀嘀~~~  页面这在飞快的跑来 . . .

Spring-IOC-Set注入


IOC

IOC

控制反转IoC(Inversion of Control),是一种设计思想,DI(依赖注入)是实现IoC的一种方法,也有人认为DI只是IoC的另一种说法。没有IoC的程序中 , 我们使用面向对象编程 , 对象的创建与对象间的依赖关系完全硬编码在程序中,对象的创建由程序自己控制,控制反转后将对象的创建转移给第三方.

IoC是Spring框架的核心内容,使用多种方式完美的实现了IoC,可以使用XML配置,也可以使用注解,新版本的Spring也可以零配置实现IoC。

Spring容器在初始化时先读取配置文件,根据配置文件或元数据创建与组织对象存入容器中,程序使用时再从IoC容器中取出需要的对象。

pom文件

导入依赖

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

    <!--导入spring的contenxt坐标 context依赖core beans expression-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.2.8.RELEASE</version>
    </dependency>

Set注入

Set注入

要求被注入的属性 , 必须有set方法 , set方法的方法名由set + 属性首字母大写 , 如果属性是boolean类型 , 没有set方法 , 是 is .

public class Salary &#123;
    private double baseSalary;

    public void setBaseSalary(double baseSalary) &#123;
        this.baseSalary = baseSalary;
    &#125;
    public double getBaseSalary() &#123;
        return baseSalary;
    &#125;
&#125;
import java.util.*;

public class Staff &#123;

    private String name;
    private Salary baseSalary;
    private String[] task;
    private List<String> hobbys;
    private Map<String, String> card;
    private Set<String> games;
    private Properties infor;

    public void setName(String name) &#123;
        this.name = name;
    &#125;

    public void setBaseSalary(Salary baseSalary) &#123;
        this.baseSalary = baseSalary;
    &#125;

    public void setTask(String[] task) &#123;
        this.task = task;
    &#125;

    public void setHobbys(List<String> hobbys) &#123;
        this.hobbys = hobbys;
    &#125;

    public void setCard(Map<String, String> card) &#123;
        this.card = card;
    &#125;

    public void setGames(Set<String> games) &#123;
        this.games = games;
    &#125;

    public void setInfor(Properties infor) &#123;
        this.infor = infor;
    &#125;

    public void show() &#123;
        System.out.println("name:" + name);
        System.out.println("salary:" + baseSalary.getBaseSalary());
        System.out.print("task:");
        for (String t : task) &#123;
            System.out.println(" " + t);
        &#125;
        System.out.println("hobbys=" + hobbys);
        System.out.println("card=" + card);
        System.out.println("games=" + games);
        System.out.println("infor=" + infor);
    &#125;
&#125;

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       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">

    <!--常量注入-->
    <bean id="Salary" class="vip.wulingzeng.pojo.Salary">
        <property name="baseSalary" value="5000"></property>
    </bean>

    <bean id="Staff" class="vip.wulingzeng.pojo.Staff">
        <property name="name" value="Tom"></property>
<!--        引用使用ref-->
        <property name="baseSalary" ref="Salary"></property>
<!--        数组注入-->
        <property name="task" >
            <array>
                <value>写一篇文案</value>
                <value>做一份ppt</value>
                <value>做周报总结</value>
                <value>列出下周任务目标</value>
            </array>
        </property>
<!--        List注入-->
       <property name="hobbys">
           <list>
               <value>唱歌</value>
               <value>写作</value>
               <value>弹吉他</value>
           </list>
       </property>
<!--        map注入-->
        <property name="card">
            <map>
                <entry key="建设银行" value="54131654867631"></entry>
                <entry key="工商银行" value="21354854564154"></entry>
            </map>
        </property>
<!--            set注入-->
        <property name="games">
            <set>
                <value>地下城与勇士</value>
                <value>英雄联盟</value>
            </set>
        </property>
<!--        proprerties注入-->
        <property name="infor">
            <props>
                <prop key="学历">本科</prop>
                <prop key="住址">太原街</prop>
                <prop key="姓名">Tom</prop>
            </props>
        </property>
    </bean>

</beans>

Test

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test &#123;
    
    @org.junit.Test
    public void test01() &#123;
        ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
        Staff staff = (Staff) app.getBean("Staff");
        staff.show();
    &#125;
&#125;

结果

name:Tom
salary:5000.0
task: 写一篇文案
 做一份ppt
 做周报总结
 列出下周任务目标
hobbys=[唱歌, 写作, 弹吉他]
card={建设银行=54131654867631, 工商银行=21354854564154}
games=[地下城与勇士, 英雄联盟]
infor={姓名=Tom, 住址=太原街, 学历=本科}

文章作者: WuLiZeng
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 WuLiZeng !
评论
 上一篇
MyBatis MyBatis
mybatis 是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。
2020-08-07
下一篇 
MySQL索引刨析 MySQL索引刨析
MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。
2020-08-02
  目录