将@Autowired注释到属性或在设置器中进行注释有什么区别?
据我所知,它们都具有相同的结果,但是是否有任何理由要使用一个?
更新(更简洁)
两者之间有区别吗
package com.tutorialspoint;
import org.springframework.beans.factory.annotation.Autowired;
public class TextEditor {
private SpellChecker spellChecker;
@Autowired
public void setSpellChecker( SpellChecker spellChecker ){
this.spellChecker = spellChecker;
}
public void spellCheck() {
spellChecker.checkSpelling();
}
}
还有这个
package com.tutorialspoint;
import org.springframework.beans.factory.annotation.Autowired;
public class TextEditor {
@Autowired
private SpellChecker spellChecker;
public TextEditor() {
System.out.println("Inside TextEditor constructor." );
}
public void spellCheck(){
spellChecker.checkSpelling();
}
}
使用@Autowired
注释,您不需要设置方法。一旦您的bean的构造函数完成了分配/创建对象的工作,Spring便会扫描该注释并注入您注释过的对象实例。
如果您有setter且仍在使用xml config,则可以显式设置属性。
话虽如此,您可以使用自动装配的注释来注释构造函数和setter方法,我希望这样做是可行的,因为这将使我在以后离开Spring时具有灵活性(尽管我不会这样做)。
问题内容: 因此,由于我一直在使用Spring,所以如果我要编写一个具有依赖项的服务,我将执行以下操作: 我现在遇到了使用另一种约定实现相同目标的代码 我知道这两种方法都行得通。但是使用选项B有一些好处吗?对我来说,它在类和单元测试中创建了更多代码。(必须编写构造函数,而不能使用@InjectMocks) 有什么我想念的吗?除了将代码添加到单元测试中之外,自动装配构造函数还有其他功能吗?这是进行依
问题内容: 总的来说,我对Web上的Spring和Java还是很陌生,但是周末我一直在为此苦苦挣扎。将所有配置整合在一起并使Spring在IntelliJ上与gradle一起使用是一个挑战。 我正在尝试在Spring中实施另一个项目,以便更好地了解如何使用它。 我整个上午都在收到此错误,并且在Spring上浏览了许多参考资料和指南,但看不到问题出在哪里。 由以下原因引起:org.springfra
我试图从特定的属性分类法中获取术语slug,但什么也得不到。 提前非常感谢!
我对Spring和Jasypt
因此,由于我一直在使用spring,如果我要编写一个具有依赖项的服务,我将执行以下操作: 我现在运行了使用另一个约定来实现相同目标的代码 这两种方法都会奏效,我明白。但是使用选项B有什么好处吗?对我来说,它在类和单元测试中创建了更多的代码。(必须编写构造函数,不能使用@InjectMocks) 是不是我漏了什么?autowired构造函数除了向单元测试添加代码之外,还有其他的功能吗?这是一种更好的
问题内容: 是否可以通过读取另一个bean的属性来设置一个bean的属性?例如,假设我有: 我希望Spring实例化这两个类,并调用A的setList方法,并传入调用B的getList方法的结果。Spring配置可能类似于: las,这种伪造的XML不起作用。 为什么不将B注入A?因为我不想引入额外的依赖关系。A仅依赖列表,而不依赖B。 问题答案: 除了@Kevin的答案,如果您使用的是sprin