Spring IoC入门:依赖注入与构造函数注入详解

需积分: 39 0 下载量 190 浏览量 更新于2024-09-02 收藏 16KB MD 举报
本文档是关于Spring框架中依赖注入(Dependency Injection, DI)的入门笔记,Spring IoC(Inversion of Control,控制反转)的核心作用在于通过配置文件降低程序之间的耦合度,将对象的创建和依赖关系管理交由Spring容器处理。当一个类需要使用其他类的对象时,不再直接创建,而是通过Spring提供的服务来获取,这种方式被称为依赖注入。 依赖注入有三种常见的实现方式: 1. 构造函数注入:Spring通过`constructor-arg`标签在XML配置文件中指定。这个标签位于`<bean>`标签内部,包含`type`、`index`或`name`属性。`type`指定了要注入的数据类型,`index`或`name`用于指定注入到构造函数中特定位置或名称的参数。例如: ```xml <bean id="accountService" class="com.pqg.service.impl.AccountServiceImpl"> <constructor-arg type="com.pqg.dao.IAccountDao" ref="accountDao"/> </bean> ``` 这里,Spring会创建`AccountServiceImpl`实例,并为其构造函数传递`accountDao`对象。 2. setter方法注入:如果类没有使用构造函数注入,Spring可以注入到成员变量上,通过`property`或`value`标签来设置。 3. 接口注入:Spring可以注入实现了特定接口的对象,这在面向接口编程中常见,例如: ```java @Autowired private IAccountService accountService; ``` `@Autowired`注解使得Spring自动查找并注入符合接口类型的bean。 在Spring配置文件`bean.xml`中,展示了如何声明两个bean(`accountService`和`accountDao`),它们分别对应了`com.pqg.service.impl.AccountServiceImpl`和`com.pqg.dao.impl.AccountDaoImpl`类。通过`<bean>`标签,Spring容器负责实例化这些对象,并根据配置进行依赖关系的管理。`ApplicationContext`类(如`ClassPathXmlApplicationContext`)用于加载和管理这些bean,使得应用程序可以根据配置自动获取所需的依赖对象。 `Client`类作为模拟的表现层,通过`ApplicationContext`的实例,根据bean的id来获取服务和数据访问对象,实现了松耦合的编程模式。这种设计使得代码更加灵活,易于维护和测试,因为对象的创建和依赖关系管理已经脱离了代码实现,而由Spring的IoC容器统一管理。