如何解决spring boot @autowired 中的注释
我已经编写了一段时间的基本 Java,现在正在体验 Spring Boot。
在spring boot中经常会看到注解。
对我来说,注解是为了节省开发人员实现更少代码的时间,顾名思义是在线。但这并不能满足我下面的问题
到目前为止,我正在体验@autowired。让我困惑的是@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} ;
}
}
然而,在基本的java中,它是不是已经允许将实例作为参数传递而没有@autowired?为什么这突然变成了一个好处?或者我错过了什么?
class A {
private int id;
// With setter and getter method
}
class B {
private String name;
A a;
B(A a){this.a = a} ;
}
}
解决方法
这样做你会得到好处(虽然不推荐)
@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 中。
但是,正如我所提到的,不推荐这样做,您可能希望通过构造函数注入它,因为这会使您的组件更易于测试(您可以轻松地注入模拟)。请注意,当您的组件/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;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。