当前位置: 首页 > 知识库问答 >
问题:

无autowire注释的Spring注入

皇甫飞光
2023-03-14

我找到了一些答案:https://stackoverflow.com/a/21218921/2754014 关于依赖注入。没有任何注释,如@Autowired@Inject@Resource。让我们假设此示例没有任何 XML 配置 两个注射样式的 bean (除了简单

注入不指定注解正确吗


共有2个答案

席烨
2023-03-14
匿名用户

是的,例子是正确的(从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可以以其通用方式使用,而无需任何注入。

史钊
2023-03-14

从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注入豆子吗

  • 如果我使用,那是什么意思?极高?