gpt4 book ai didi

java - @Autowired vs @Required on setter

转载 作者:IT老高 更新时间:2023-10-28 13:47:29 27 4
gpt4 key购买 nike

我很想知道这样的代码有什么区别:

class MyClass {
@Autowired
MyService myService;
}

和这样的代码:

class MyClass {
MyService myService;

@Required
public void setMyService(MyService val) {
this.myService = val;
}
}

最佳答案

@Autowired 注释用于 Autowiring bean。 @Autowired 不限于 setter。它也可以与构造函数和字段一起使用。如果您在字段上使用 @Autowired 注释,该字段将与具有匹配数据类型的 bean Autowiring 。

@Required 检查是否设置了特定属性。如果某个字段已使用 @Required 注释进行注释并且该字段未设置,您将得到 org.springframework.beans.factory.BeanInitializationException

引用:

Spring @Autowired usage

Recommended usage of Spring's @Required annotation

编辑:正如 'kryger' 所指出的:用 @Autowired 注释的字段实际上也是 @Required (除非您明确将其参数设置为 false)。例如:

@Autowired(required=false)
private ObjectType objectType;

对于已经注解@Autowired的字段,如果没有匹配数据类型的bean,则抛出org.springframework.beans.factory.BeanCreationException

关于java - @Autowired vs @Required on setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18884670/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com