Spring IOC 注入的3种方式小结

 更新时间:2024年08月12日 11:35:19   作者:Seal^_^  
Spring IoC容器支持多种依赖注入方式,本文主要介绍了Spring IOC 注入的3种方式小结,具有一定的参考价值,感兴趣的可以了解一下

Spring IoC容器支持多种依赖注入方式,其中最常见的是:

1. 构造器注入(Constructor Injection)

  • 特点:通过构造函数传递依赖项。
  • 优点:确保依赖项不可变,增强封装性。
  • 适用场景:依赖项是必需的,且在对象创建时就需要。

示例:

@Component  
public class UserService {  
    private final UserRepository userRepository;  
  
    @Autowired  
    public UserService(UserRepository userRepository) {  
        this.userRepository = userRepository;  
    }  
}

2. Setter方法注入(Setter Injection)

  • 特点:通过setter方法传递依赖项。
  • 优点:灵活性高,依赖项可选,便于单元测试。
  • 适用场景:依赖项不是必需的,或在对象创建后可能需要修改。

示例:

@Component  
public class UserService {  
    private UserRepository userRepository;  
  
    @Autowired  
    public void setUserRepository(UserRepository userRepository) {  
        this.userRepository = userRepository;  
    }  
}

3. 字段注入(Field Injection)

  • 特点:直接在类的字段上使用注解来注入依赖项。
  • 优点:代码简洁,减少了setter方法的编写。
  • 缺点::可能破坏封装性,并且在某些情况下(如单元测试)难以替换依赖项。

示例:

使用@Autowired注解直接注入字段。

@Component  
public class UserService {  
    @Autowired  
    private UserRepository userRepository;  
 
    // 其他方法...  
}
  

到此这篇关于Spring IOC 注入的3种方式小结的文章就介绍到这了,更多相关Spring IOC 注入内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Nacos服务实例的权重设置方式(以及设置为0时的作用与场景)

    Nacos服务实例的权重设置方式(以及设置为0时的作用与场景)

    这篇文章主要介绍了Nacos服务实例的权重设置方式(以及设置为0时的作用与场景),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • SpringBoot权限认证-Sa-Token的使用详解

    SpringBoot权限认证-Sa-Token的使用详解

    Sa-Token是一款轻量级Java权限认证框架,它简化了权限管理,提高了开发效率,本文通过实例介绍了Sa-Token的基本概念、与其他框架的比较、基本语法和高级用法,并探讨了其核心原理和实际应用场景,感兴趣的朋友一起看看吧
    2024-09-09
  • Java8 Stream对两个 List 遍历匹配数据的优化处理操作

    Java8 Stream对两个 List 遍历匹配数据的优化处理操作

    这篇文章主要介绍了Java8 Stream对两个 List 遍历匹配数据的优化处理操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • Java人民币小写转大写字符串的实现

    Java人民币小写转大写字符串的实现

    这篇文章主要介绍了Java人民币小写转大写字符串的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Java基础入门 Swing中间容器的使用

    Java基础入门 Swing中间容器的使用

    这篇文章主要介绍了Java基础入门 Swing中间容器的使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Java实现Redis分布式锁的三种方案汇总

    Java实现Redis分布式锁的三种方案汇总

    setnx、Redisson、RedLock 都可以实现分布式锁,从易到难得排序为:setnx < Redisson < RedLock,本文为大家整理了三种方法的实现,希望对大家有所帮助
    2023-11-11
  • SpringBoot如何手写一个starter并使用这个starter详解

    SpringBoot如何手写一个starter并使用这个starter详解

    starter是SpringBoot中的一个新发明,它有效的降低了项目开发过程的复杂程度,对于简化开发操作有着非常好的效果,下面这篇文章主要给大家介绍了关于SpringBoot如何手写一个starter并使用这个starter的相关资料,需要的朋友可以参考下
    2022-12-12
  • Spring Boot中扩展XML请求与响应的支持详解

    Spring Boot中扩展XML请求与响应的支持详解

    这篇文章主要给大家介绍了关于Spring Boot中扩展XML请求与响应的支持的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09
  • Java通过FTP服务器上传下载文件的方法

    Java通过FTP服务器上传下载文件的方法

    本文介绍了如何使用Apache Jakarta Commons Net(commons-net-3.3.jar)基于FileZilla Server服务器实现FTP服务器上文件的上传/下载/删除等操作,需要的朋友可以参考下
    2015-07-07
  • Java中的CompletableFuture使用解析

    Java中的CompletableFuture使用解析

    这篇文章主要介绍了Java中的CompletableFuture使用解析,为什么CompletableFuture要定制化线程池,因为默认的线程池是ForkJoinPool,这个线程池的最大线程数默认是你的电脑的线程数数减1,假如我线程电脑是4核8线程的,ForkJoinPool的最大线程数就是7,需要的朋友可以参考下
    2024-01-01

最新评论