我找到了一些答案:https://stackoverflow.com/a/21218921/2754014 关于依赖注入。没有任何注释,如@Autowired
,@Inject
或@Resource
。让我们假设此示例没有任何 XML 配置 两个注射样式
的 bean (除了简单
注入不指定注解正确吗
匿名用户
是的,例子是正确的(从Spring 4.3发布开始)。根据文档(这是针对ex的),如果bean只有一个构造函数,那么可以省略< code>@Autowired注释。
但有几个细微差别:
1.如果存在单个构造函数,并且setter标记有@Autowired
注释,则两个构造函数
@Component
public class TwoInjectionStyles {
private Foo foo;
public TwoInjectionStyles(Foo f) {
this.foo = f; //Called firstly
}
@Autowired
public void setFoo(Foo f) {
this.foo = f; //Called secondly
}
}
2.另一方面,如果根本没有< code>@Autowire(如您的示例中所示),那么< code>f对象将通过构造函数被注入一次,setter可以以其通用方式使用,而无需任何注入。
从Spring4.3开始,构造函数注入不需要注释。
public class MovieRecommender {
private CustomerPreferenceDao customerPreferenceDao;
private MovieCatalog movieCatalog;
//@Autowired - no longer necessary
public MovieRecommender(CustomerPreferenceDao customerPreferenceDao) {
this.customerPreferenceDao = customerPreferenceDao;
}
@Autowired
public setMovieCatalog(MovieCatalog movieCatalog) {
this.movieCatalog = movieCatalog;
}
}
但您仍然需要@Autowired
进行setter注入。我刚才用Spring Boot 1.5.7
(使用Spring 4.3.11bean时,没有注入bean。
另外,请举例说明何时使用annotaion。 提前感谢。
假设您有一个接口 和两个实现类
本文向大家介绍Spring中@Autowire注入的深入讲解,包括了Spring中@Autowire注入的深入讲解的使用技巧和注意事项,需要的朋友参考一下 一直在思考spring的@Autowire注入属性时到底是按类型注入还是按名称注入,今天写了一个测试来证明一下。 定义接口TestService 定义接口实现:TestServiceImpl1和TestServiceImpl2 定义一个bean
我的大多数测试都是在扩展BaseReport的具体类上进行的,没有任何问题: 这适用于所有扩展baseReport的类的autowiring。但是我还需要autowire抽象类本身BaseReport,以测试export()方法。 当我试图运行它时,我得到了臭名昭著的: 干杯。
我已将我的Spring应用程序配置如下: 我使用组件扫描来选择@配置。我的问题是Spring会为B注入豆子吗
如果我使用,那是什么意思?极高?