Spring IOC学习
提出背景:
在我们的日常开发中,创建对象的操作随处可见以至于对其十分熟悉的同时又感觉十分繁琐,每次需要对象都需要亲手将其new出来,甚至某些情况下由于坏编程习惯还会造成对象无法被回收,这是相当糟糕的。但更为严重的是,我们一直倡导的松耦合,少入侵原则,这种情况下变得一无是处。
解决方法:
我们在创建对象的时候,不自己创建而是由外部提供对象
引出IOC:对象的创建权由程序转移到外部,这种思想叫做控制反转。
IOC的核心概念
使用对象时候由主动new对象转换成由外部提供对象,此过程中对象的创建权由程序转移到外部,这种思想叫做控制反转
Spring技术对此提供的实现
Spring提供了一个容器,称为IOC容器,用来充当IOC思想中的外部
IOC容器负责对象的创建、初始化等一系列工作,被创建或被管理的对象在IOC容器中统称为Bean。
IOC实现方式:
- 依赖注入:通过构造函数注入、属性注入和接口注入等方式,将依赖项注入到对象中。
- XML 配置文件:使用 XML 格式的配置文件来描述对象的创建和依赖关系。
- Java 配置:使用 Java 类或注解来配置对象的创建和依赖关系。
- 自动装配:根据类的结构和注解,Spring 框架可以自动识别和注入依赖项。
示例:使用 XML 配置文件实现 Spring IoC
- 创建 XML 配置文件(例如 applicationContext.xml):
<beans> <bean id="customer" class="com.example.Customer"> <property name="name" value="John Doe"/> </bean> </beans>
- 在代码中使用 IoC:
@Component public class CustomerServiceImpl implements CustomerService { @Autowired private Customer customer; public void doSomething() { System.out.println(customer.getName()); } }
在上面的示例中,我们使用 XML 配置文件创建了一个名为 customer 的对象,并将其注入到 CustomerServiceImpl 中。通过 @Autowired 注解, CustomerServiceImpl 可以自动获取 customer 对象并使用它。
总结
- Spring IoC 通过依赖注入和控制反转的方式,将对象的创建和依赖关系的管理从代码中解耦出来。
- Spring IoC 提供了可配置性和灵活性,方便修改和维护对象的创建和依赖关系。
- Spring IoC 支持多种实现方式,包括 XML 配置文件、Java 配置和自动装配等。
- 通过使用 Spring IoC,我们可以降低代码的耦合度,提高代码的可复用性和开发效率。