Spring系列(三)、利用Spring的IoC(控制反转)实现经典案例打印机
时间: 2024-10-18 20:19:13 浏览: 38
Spring框架中的IoC (Inversion of Control,控制反转)是一种设计模式,它强调的是将对应用程序组件的控制权从应用代码转移到外部容器,如Spring容器。在经典打印机案例中,我们可以设想有一个打印服务接口PrinterService:
```java
public interface PrinterService {
void printDocument(Document document);
}
```
然后有几种具体的打印机实现,比如激光打印机LaserPrinter、喷墨打印机JetPrinter等:
```java
@Component
public class LaserPrinter implements PrinterService {
@Override
public void printDocument(Document document) {
// 激光打印机打印操作
}
}
@Component
public class JetPrinter implements PrinterService {
@Override
public void printDocument(Document document) {
// 喷墨打印机打印操作
}
}
```
在Spring配置文件里,我们不会直接实例化这些打印机,而是让Spring负责管理它们:
```xml
<bean id="laserPrinter" class="com.example.LaserPrinter"/>
<bean id="jetPrinter" class="com.example.JetPrinter"/>
<bean id="printerService" class="com.example.PrinterService">
<property name="impl" ref="laserPrinter" /> <!-- 或者 jetPrinter -->
</bean>
```
通过`@Autowired`注解,我们可以轻松地在需要的地方注入`PrinterService`的实例,并由Spring根据上下文自动选择正确的打印机。这实现了IoC,因为组件之间的依赖关系不再由代码直接建立,而是通过外部容器进行管理。
阅读全文