关于spring bean注入的一个问题

今天看了大佬的代码,看到他们在注入RestTemplate是这样写的:

    //大佬的对象注入方式
    private final RestTemplate restTemplate;

    @Autowired
    public TestController(RestTemplate restTemplate) {
        this.restTemplate = restTemplate;
    }

-----------------------------------------------------

    //平时我的注入方式
    @Autowired
    private  RestTemplate restTemplate;

想问问这两种写法有什么区别?

2个回答

大佬的写法的优点
1. 避免循环依赖。如果构造器中存在循环依赖,spring启动时就会抛出异常。而不是等到业务流程走到发现空指针时才发现
2. 不需要空指针检查,如果注入时为空则会直接抛出异常
3. 提升代码的复用性,如果不是spring容器,使用该bean不需要检查入参的空指针问题。而且如果不是spring容器服务,使用该bean只能通过反射的方式注入属性

注解在方法上和属性上,理论上是没有区别的,最终都会完成成员变量的 setter 动作。
,是通过调用 set 方法完成的。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问