我编写basic java已经有一段时间了,现在我体验到了spring boot。
在spring boot中经常可以看到注释。
对我来说,注释是为了节省开发人员的时间来实现更少的代码,根据在线定义。但这并不能满足我下面的问题
到目前为止,我正在体验“自动连线”。让我困惑的是,@autowired启用了依赖注入,并告诉bean配置xml (我还不知道它有多有用)
例如,
class A {
private int id;
// With setter and getter method
}
class B {
private String name;
@Autowired
A a;
B(A a){this.a = a} ;
}
}然而,在basic java中,它不是已经允许在不使用@autowired的情况下将instance作为参数进行传递吗?为什么这突然变成了一种好处?或者我错过了什么?
class A {
private int id;
// With setter and getter method
}
class B {
private String name;
A a;
B(A a){this.a = a} ;
}
}发布于 2021-04-16 16:14:19
这样做会给你带来好处(尽管不推荐这样做)
@Component
class A {
private int id;
// With setter and getter method
}
@Component
class B {
private String name;
@Autowired
A a;
B() {
}
}现在,假设这些类位于@SpringBootApplication注解类的相同或子包中,将为您自动配置,并且A将由Spring框架使用反射注入到B中。
但是,正如我前面提到的,不推荐这样做,您可能希望通过构造函数注入它,因为这会使您的组件更容易测试(您可以轻松地注入mock来代替它)。请注意,当您有一个带有带参数的构造函数的组件/bean时,会推断出@Autowired,spring将尝试为您找到要注入其中的bean。
@Component
class A {
private int id;
// With setter and getter method
}
@Component
class B {
private String name;
final A a;
B(A a) {
this.a = a;
}
}https://stackoverflow.com/questions/67121095
复制相似问题