java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > spring @Autowired注入与构造函数注入使用

spring-@Autowired注入与构造函数注入使用方式

作者:smilecjw

这篇文章主要介绍了spring-@Autowired注入与构造函数注入使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

前言

因为业务关系也看了些同事写的代码,因为公司没有明确规定,有一部分人在注入依赖的时候使用了用Spring推荐的构造器注入的方式,一部分人使用了@Autowired的注解进行注入。

因此,接下来我试着总结归纳一下相关的情况,做一次回顾。

用自己的话去说出来才算是真的掌握。

使用介绍

1.@Autowired注入

@RestController
@RequestMapping("/test")
public class TestController {
    @Autowired
    private List<TestService> testServices;
    @Autowired
    private List<ChainAsbtract> chains;
 
    private ChainAsbtract target;
 
}

2.构造器注入

Spring4.3+之后,constructor注入支持非显示注入方式。

@RestController
@RequestMapping("/test")
public class TestController {
//    @Autowired
    private final List<TestService> testServices;
//    @Autowired
    private final List<ChainAsbtract> chains;
 
//    @Autowired
    public TestController(List<TestService> testServices, List<ChainAsbtract> chains) {
        this.testServices = testServices;
        this.chains = chains;
    }
 
    
}

3.setter注入

@RestController
@RequestMapping("/test")
public class TestController {
//    @Autowired
    private final List<TestService> testServices;
//    @Autowired
    private final List<ChainAsbtract> chains;
 
    @Autowired
    public void setTestServices(List<TestService> testServices){
        this.testServices = testServices;
    }
 
    @Autowired
    public void setTestServices(List<ChainAsbtract> chains){
        this.chains = chains;
    }
    
}

事实上,spring在4.x版本后就推荐使用构造器的方式的来注入fileld

官方推荐理由

另外,在使用构造器的使用能避免注入的依赖是空的情况。

因为在bean的生命周期里面先执行的是bean的构造器,然后才给bean里面的属性赋值。

具体内容在bean的生命周期里面,后面我学习之后按照自己的理解写写。

总结

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

您可能感兴趣的文章:
阅读全文