spring的ioc浅谈

79 阅读1分钟

「这是我参与2022首次更文挑战的第23天,活动详情查看:2022首次更文挑战」。

一、我对ioc的理解

  1. 依赖注入其实应该是指bean里面属性或者字段的设置,即注入属性的值或注入引用对象的索引
  2. 控制反转:我们之前是在程序运行的时候在JVM中创建对象,而现在是在程序中先创建对象。

二、ioc的操作

  1. pom文件引入依赖
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${spring.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-expression</artifactId>
    <version>${spring.version}</version>
</dependency>

clipboard.png ${spring.version}是配置的依赖的版本

  1. 建立bean对应的实体

clipboard.png

(1)接口Ink clipboard.png

(2)实现类BlackInk clipboard.png (3)实现类Color clipboard.png (4)接口Page clipboard.png (5)实现类A4Page

clipboard.png

打印机类:Printer

package demo.xianqiao.print;

import demo.xianqiao.ink.Ink;
import demo.xianqiao.page.Page;

/**
 * 打印机所在类 打印机由墨盒和纸张组成
 */
public class Printer {
    private Ink ink;
    private Page page;

    public Ink getInk() {
        return ink;
    }

    public void setInk(Ink ink) {
        this.ink = ink;
    }

    public Page getPage() {
        return page;
    }

    public void setPage(Page page) {
        this.page = page;
    }

    public Printer() {
    }

    public Printer(Ink ink, Page page) {
        this.ink = ink;
        this.page = page;
    }

    public void print(String content) {
        System.out.println("ink:" + ink.getColor());
        System.out.println("page:" + page.getStyle());
        System.out.println(content);
    }
}
  1. 配置配置文件applicationContext.xml (1)引入命名空间

clipboard.png

(2)配置bean实体

clipboard.png

  1. 测试类
package demo.xianqiao.print;

import org.apache.log4j.Logger;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * 打印机测试类
 */
public class PrinterTest {

    private static Logger logger = Logger.getLogger(PrinterTest.class);

    @Test
    public void testPrint() {
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        Printer printer = applicationContext.getBean("printer", Printer.class);
        printer.print("打印内容");
    }
}

此处就是控制反转的一个简单运用了,在配置的时候还可以使用其它的注入方式。 clipboard.png