Spring依赖注入详解(方式举例及流程原理)

Spring依赖注入详解(方式举例及流程原理)-mikechen

Spring依赖注入是Spring经常使用到的内容,下面我就重点来详解Spring依赖注入的方式及流程@mikechen

Spring依赖注入定义

Spring依赖注入,英文名师Dependency Injection,简称DI,是指将一个对象所依赖的其他对象的引用传递给它,而不是让它自己去创建这些对象。

通过依赖注入,我们可以实现对象之间的松耦合,降低代码的复杂性和耦合度,提高应用程序的可维护性和可测试性。

 

Spring依赖注入方式

Spring依赖注入的实现方式包括构造函数注入、Setter方法注入和自动装配。

1.构造函数注入

构造函数注入是指在创建一个对象时,将其所依赖的其他对象作为构造函数的参数传递进去。

在Spring中,可以通过XML配置文件或注解来实现构造函数注入,示例:

<bean id="userService" class="com.example.UserService">
    <constructor-arg ref="userDao"/>
</bean>
public class UserServiceImpl implements UserService {
   private final UserDAO userDAO;

   public UserServiceImpl(UserDAO userDAO) {
      this.userDAO = userDAO;
   }

   // ...
}

在这个例子中,创建一个名为“userService”的bean,并将一个名为“userDao”的bean作为构造函数的参数传递进去。

 

2.Setter方法注入

Setter方法注入是指通过对象的setter方法将其所依赖的其他对象注入到该对象中。

在Spring中,可以通过XML配置文件或注解来实现setter方法注入,示例:

<bean id="userService" class="com.example.UserService">
    <property name="userDao" ref="userDao"/>
</bean>
public class UserController {
   private UserService userService;

   public void setUserService(UserService userService) {
      this.userService = userService;
   }

   // ...
}

在这个例子中,创建一个名为“userService”的bean,并将一个名为“userDao”的bean注入到它的“userDao”属性中。

 

3.注解注入

注解注入是指通过注解来标识需要注入的依赖对象,常用的注解包括:@Autowired和@Qualifier。

例如:

@Service
public class UserServiceImpl implements UserService {
   @Autowired
   private UserDAO userDAO;

   // ...
}

Spring容器会自动扫描带有特定注解的类或方法,并将注解标识的依赖对象注入到需要依赖的对象中。

 

Spring依赖注入原理

Spring的依赖注入是通过IoC容器实现的,以下是Spring依赖注入的流程:

1.创建IoC容器

在Spring中IoC容器负责创建和管理所有的对象,当应用程序启动时,IoC容器会被创建,并且会读取配置文件中的bean定义信息,然后创建相应的bean实例。

 

2.扫描并解析Bean定义信息

IoC容器会扫描配置文件中所有的bean定义信息,并将这些信息解析成容器内部的数据结构。

例如,在使用XML配置文件时,容器会解析<bean>标签的信息,并将它们存储在内存中。

 

3.实例化Bean

在解析完bean定义信息后,IoC容器会根据这些信息来实例化所有的bean对象。

这些bean对象可以是普通的Java对象、数据库连接池、JMS连接等等。

 

4.处理依赖注入

当一个bean被实例化后,IoC容器会检查这个bean所依赖的其他bean,并将它们注入到这个bean中

。注入可以通过构造函数注入、setter方法注入、自动装配等方式实现。

 

5.将Bean放入容器中

在所有的bean都被实例化和注入完毕后,IoC容器会将它们放入容器中,以便其他对象可以通过容器获取它们。

 

6.销毁Bean

当应用程序关闭时,IoC容器会销毁所有的bean对象,释放资源。

总之,Spring的依赖注入是通过IoC容器实现的,容器负责创建、管理和注入所有的bean对象,使得应用程序更加灵活和可维护。

以上就是Spring依赖注入详解,更多Spring内容请查看:Spring教程(史上最全图文详解)

作者简介

陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

👇阅读更多mikechen架构文章👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法