从注入的方式来看,主要可以划分成3种:构造函数注入,属性注入,接口注入。
这三种注入的实现如下:
操作对象:
@Data@NoArgsConstructorpublic class SimpleObject { private SimpleInterface simpleInterface; private String prop; public SimpleObject(String prop) { this.prop = prop; }}
配置文件:
UT:
1 @Test 2 public void test1() { 3 ApplicationContext context = new ClassPathXmlApplicationContext("ioc/di.xml"); 4 SimpleObject simpleObject = (SimpleObject) context.getBean("simpleObject1"); 5 System.out.println(simpleObject.getProp()); 6 } 7 8 @Test 9 public void test2() {10 ApplicationContext context = new ClassPathXmlApplicationContext("ioc/di.xml");11 SimpleObject simpleObject = (SimpleObject) context.getBean("simpleObject2");12 System.out.println(simpleObject.getProp());13 }14 15 @Test16 public void test3() {17 ApplicationContext context = new ClassPathXmlApplicationContext("ioc/di.xml");18 SimpleObject simpleObject = (SimpleObject) context.getBean("simpleObject3");19 simpleObject.getSimpleInterface().doSth();20 }
举个例子。注入就类似电脑上预设置了多个USB接口,你插入U盘也好,手机也好,都可以识别并运行,电脑并不在乎你插入的介质是什么。
ioc的理念实际上也是想要做到热插拔的而提出的设计思想,注入刚好是一种良好的实现方式。