0
点赞
收藏
分享

微信扫一扫

sprinBoot中Bean的几种注入方式

楚木巽 2022-01-04 阅读 63

1.构造器注入

构造注入是Spring官方推荐使用的注入方式,但平时开发中很少使用这种方式。一般在有静态方法需要使用注入的对象时使用构造器注入的方式, 构造注入可以解决字段注入对外部不可见、无法注入不可变对象的问题,但是构造注入也有缺点。如果注入的对象较多,那么构造函数就会变得臃肿,可读性较差。构造注入无法解决循环依赖的问题,因为解决循环依赖需要用到三级缓存,对象放入三级缓存是在创建对象之后进行的,所以构造注入无法利用三级缓存解决循环依赖的问题。

@Common
public class TestUtil{

    private static Config config;

    public PdfUtil(Config config) {
        TestUtil.config = config;
    }
}

2.字段注入

字段注入是平时开发中最常使用的注入方式,因为简单方便,可读性强。但是Spring官方不建议我们使用这种注入方式. 注入的字段对外部不可见:类中的字段访问修饰符都是private,如果不添加get/set方法,对外是不可见的。这时该字段只能由Spring进行操作,我们是访问不了的,与容器的耦合度太高,而且不符合Java开发规范。无法注入不可变的对象:字段注入的时机是在对象创建之后进行的,如果注入的字段是final,则无法进行注入。

@RestController
public class TestController{

    @Autowired
    private GeneratePdfService generatePdfService;
}

3.setter方法注入

 setter方法注入综合了字段注入与构造注入的优缺点,既不会像构造函数注入那样臃肿,也不会像字段注入那样不符合JavaBean规范。它可以解决循环依赖的问题,但是也不能注入不可变的对象。

@RestController
public class TestController{

    private GeneratePdfService generatePdfService;

    @Autowired
    public void setGeneratePdfService(GeneratePdfService generatePdfService) {
        this.generatePdfService = generatePdfService;
    }
}
    
举报

相关推荐

0 条评论