你可能使用了Spring最不推荐使用的注解注入方式

时间:2020-11-07 20:03:47   收藏:0   阅读:156

前言

使用Spring框架最核心的两个功能就是IOC和AOP。IOC也就是控制反转,我们将类的实例化、依赖关系等都交由Spring来处理,以达到解耦合、利用复用、利于测试、设计出更优良程序的目的。而对用户来说,操作最对的便是注解。在Spring中提供了三类注解方式,下面我们就逐一分析。最后,你会发现,你最常用、看起来最方便的形式确实最不推荐的一种形式。

1.Field注入方式

在属性上添加注解:

    @Autowired
    private BookMapper bookMapper;

此种注解方式,应用最广泛:

但是此种方式spring官方并不推荐,在IDEA中你可能会收到以下警告:

技术分享图片

 这个警告意思就是不推荐变量注入方式,如果使用万能键可能会有IDEA的推荐方式:使用构造器的方式强制注入。

2.set方法注入方式

    private BookMapper bookMapper;

    @Autowired
    public void setBookMapper(BookMapper bookMapper) {
        this.bookMapper = bookMapper;
    }

这种方式IDEA不会产生警告,Spring3.x推荐的注入方式,但并没有被广泛应用,当初推荐的理由:

3.构造函数+final注入方式

    private final BookMapper bookMapper;
    //@Autowired 在只有一个构造函数情况下可以不写注解
    public BookServiceImpl(BookMapper bookMapper) {
        this.bookMapper = bookMapper;
    }

Spring4.x推荐的注入方式。对比Field注入:

为什么spring4.x之后推荐构造函数注入?

从代码上来看,构造函数注入好像并没有显现出来它的优势,但问什么Spring4.x会推翻之前推荐的setter注入,采用构造函数注入呢?官方的理由汇总如下:

虽然Field注入方式代码是如此的简洁美观,但它存在一些问题:

而如果是采用构造器注入或者set注入,就可以避免上诉问题。

总结

变量注入的方式应该尽量避免,但是存在即合理,根据具体情况可以采用最适合的方式。

如果你在项目中使用了lombok,那么构造函数方式代码可以更加简洁,并且运行良好:

技术分享图片

原文:https://www.cnblogs.com/StarChen20/p/13941873.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!