java spring依赖注入有哪些缺点?升级版新特征是什么?

BSO 2020-09-30 16:15:52 java常见问答 7045

上次已经为大家介绍过java spring依赖注入方式有哪几种的主要内容,今天再来为大家介绍一些与之相关的内容,也就是依赖注入的一些缺点,并且介绍一下spring4.3的新特征,一起来看看吧。

一、首先说一下java spring依赖注入有哪些缺点

1.当我们利用constructor来注入的时候,比较明显的一个缺点就是:假如我们需要注入的对象特别多的时候,我们的构造器就会显得非常的冗余、不好看,非常影响美观和可读性,维护起来也较为困难;

2.当我们选择setter方法来注入的时候,我们不能将对象设为final的;

3.当我们在field变量上来实现注入的时候

a.这样不符合JavaBean的规范,而且很有可能引起空指针;

b.同时也不能将对象标为final的;

c.类与DI容器高度耦合,我们不能在外部使用它;

d.类不通过反射不能被实例化(例如单元测试中),你需要用DI容器去实例化它,这更像集成测试;

二、然后为大家介绍一下Spring 4.3 的新特征:

spring 4.3以后,如果我们的类中只有单个构造函数,那么Spring就会实现一个隐式的自动注入。

之前,代码展示如下:

@Service
public class FooService
{
    private final FooRepository repository;
    @Autowired
    public FooService(FooRepository repository)
    {
        this.repository = repository
    }
}

在Spring 4.3之后,代码展示如下:

@Service
public class FooService
{
    private final FooRepository repository;
    public FooService(FooRepository repository)
    {
        this.repository = repository
    }
}

由上可知,去掉了构造器上的@Autowired注解,经测试后发现,程序能正常运行,repository的依赖也被成功注入了。

总而言之:

1.强制性的依赖性或者当目标不可变时,使用构造函数注入(应该说尽量都使用构造器来注入)

2.可选或多变的依赖使用setter注入(建议可以使用构造器结合setter的方式来注入)

3.在大多数的情况下避免field域注入

4.Spring 4.3+可以试一试构造器的隐式注入,采用此方式注入后,使得我们的代码更优雅,更独立,减少了对Spring的依赖性。

以上就是关于java spring依赖注入有哪些缺点以及升级版新特征是什么的主要内容。java的知识还是十分丰富和有趣的。如果你对java知识感兴趣,想要了解更多java架构师相关内容,敬请关注奇Q工具网。

推荐阅读:

springsecurity对静态页面不拦截怎么设置?

springsecurity动态配置url权限如何实现?

spring batch是什么?入门详解