SpringBoot中的自动注入方式

 更新时间:2024年03月27日 11:25:38   作者:汪冠州·  
这篇文章主要介绍了SpringBoot中的自动注入方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

字段注入在spring 3.0 已经被官方列入为不推荐使用

项目集成:Lombok、Spring Boot

方式一:使用 [ Lombok ]的[ @RequiredArgsConstructor ]进行构造器注入

@RequiredArgsConstructor

[SpringBoot] 运行结果

注意事项 !! 该注解只会对 [final] 修饰符的字段进行注入

以下是编译以后的 .java 代码,可以看到注解帮我们生成了一个构造器,并且spring 会为构造器自动注入

总结:

final 修饰符的字段使用 lombok 可以帮助生成构造器,spring 会为构造器所有的属性注入

方式二:使用 [ Lombok ] 的 [ @Setter ] 进行注入

使用注解在生成 se方法的时候添加注入注解

@Setter(onMethod = @__(@Autowired))

        

注意事项 !! 不会对  [ final ] 修饰符的字段生成方法

反编译后代码

总结:

[ Lombok ] 的 [ @Setter ] 注解可以指定在生成时加入指定注解

方式三:使用  [ Lombok ] 的 [ @Setter ] 注解按字段名字注入

1、准备一个 OK 接口和两个实现类

OK 接口

实现类 1

实现类 2

调用者

@Autowired 替换为 @Resource 

1、@Autowired 是按照类型查找

2、@Resource 先是按Bean名字查找,如果Bean没有名字则使用字段名字 (即变量名) 查找,都没有找到的话会按类型查找

调用结果

总结:

多个实现类可以使用@Resorce 按名字查找

思考

字段注入上 @Autowired 或者 @Resorce 真的不会很冗余吗?

或许我们应该抛弃字段注入多写一些注释在字段上面,让后来者知道为什么要注入某类去做某事。

最后

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java利用深度搜索解决数独游戏详解

    Java利用深度搜索解决数独游戏详解

    数独是一项非常简单的任务。玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫(3*3)内的数字均含1-9,不重复。本文将利用Java编写一个程序来解决给定的数独任务,感兴趣的可以动手尝试一下
    2022-08-08
  • Java全排列算法字典序下的下一个排列讲解

    Java全排列算法字典序下的下一个排列讲解

    今天小编就为大家分享一篇关于Java全排列字典序下的下一个排列,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • spring之SpEL表达式详解

    spring之SpEL表达式详解

    这篇文章主要介绍了spring之SpEL表达式详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Java之String类型的编码方式转换

    Java之String类型的编码方式转换

    这篇文章主要介绍了Java之String类型的编码方式转换,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • JAVA学习之一步步搭建spring框架

    JAVA学习之一步步搭建spring框架

    这篇文章主要介绍了JAVA学习之一步步搭建spring框架,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • Java给JFrame窗口设置热键的方法实现

    Java给JFrame窗口设置热键的方法实现

    这篇文章主要介绍了Java给JFrame窗口设置热键的方法实现,文中通过示例代码以及图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-07-07
  • 如何解决@NotBlank不生效的问题

    如何解决@NotBlank不生效的问题

    这篇文章主要介绍了如何解决@NotBlank不生效的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Java中的线程ThreadLocal详细解析

    Java中的线程ThreadLocal详细解析

    这篇文章主要介绍了Java中的线程ThreadLocal详细解析,ThreadLocal是线程本地变量,存储在ThreadLocal里面的数据都是线程安全的,一般ThreadLocal适用的场景多是各个线程间没有变量共享需要的同步问题场景,需要的朋友可以参考下
    2023-10-10
  • Spring Boot中使用Swagger3.0.0版本构建RESTful APIs的方法

    Spring Boot中使用Swagger3.0.0版本构建RESTful APIs的方法

    Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务,这篇文章主要介绍了Spring Boot中使用Swagger3.0.0版本构建RESTful APIs的方法,需要的朋友可以参考下
    2022-11-11
  • java之使用多线程代替for循环(解决主线程提前结束问题)

    java之使用多线程代替for循环(解决主线程提前结束问题)

    这篇文章主要介绍了java之使用多线程代替for循环(解决主线程提前结束问题),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03

最新评论