「这是我参与2022首次更文挑战的第23天,活动详情查看:2022首次更文挑战」。
一、我对ioc的理解
- 依赖注入其实应该是指bean里面属性或者字段的设置,即注入属性的值或注入引用对象的索引
- 控制反转:我们之前是在程序运行的时候在JVM中创建对象,而现在是在程序中先创建对象。
二、ioc的操作
- 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>
${spring.version}是配置的依赖的版本
- 建立bean对应的实体
(1)接口Ink
(2)实现类BlackInk
(3)实现类Color
(4)接口Page
(5)实现类A4Page
打印机类: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);
}
}
- 配置配置文件applicationContext.xml (1)引入命名空间
(2)配置bean实体
- 测试类
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("打印内容");
}
}
此处就是控制反转的一个简单运用了,在配置的时候还可以使用其它的注入方式。