依赖注入(Dependency Injection,DI)是实现松耦合设计的重要手段。DI使得对象的创建与其依赖的对象分离,从而提高了代码的可维护性、可测试性和灵活性。在Spring框架中,DI主要通过两种方式实现:构造器注入和Setter注入。 比如,你要给孩子买玩具。你可以选择直接去商店购买玩具(直接创建依赖),这可能会导致你每次都要花时间和精力去选择玩具。或者,你可以让孩子告诉你他们想要什么(依赖注入),然后你再去商店购买。这样,你就能根据孩子的需求灵活选择,而不是每次都要自己决定。
在实际应用中,Setter注入常用于那些依赖是可选的场景,或者在对象创建后可能会改变的依赖。理解Setter注入的原理和实现方式,将帮助我们设计更灵活的应用程序。
一、依赖注入的概念
依赖注入是控制反转(Inversion of Control,IoC)的一种实现方式。通过依赖注入,Spring容器负责创建对象并注入其依赖,而不是让对象自己管理依赖。
1. Setter注入
Setter注入是通过公共的Setter方法来设置依赖的方式。在对象创建后,可以通过Setter方法逐一设置依赖。
优点:
-
依赖可以选择性注入,不必在构造时提供所有依赖。
-
适合那些依赖是可选的场景。
缺点:
-
可能导致对象在未完全构建时被使用,增加了出错的可能性。
二、Setter注入的实现方式
下面我们通过具体示例来演示Setter注入的实现