2

我在我的项目中使用基于 Java 的 Spring 配置,在 @Configuration 中的 @Bean-annotated 方法中指定 bean 构造。最近,最近,我开始认为使用@Autowired 从@Configuration 中删除所有不重要的bean 可能会更好,只留下它们的一小部分“根”集(关键服务和技术bean 之类的Spring MVC 的)。

不幸的是,Spring 似乎只有在 @Autowired 依赖项位于组件扫描包中时才能注意到它们的实现,而如果不求助于一些 XML,我就无法做到这一点。

有没有办法在不明确指定每个 bean 的情况下将 @Autowired 与基于 Java 的配置一起使用?

4

2 回答 2

4

如果我理解正确,您期望 SpringDaoImpl根据接口的自动装配依赖关系自动发现该类Dao

这不会发生 - 您要么需要使用组件扫描,要么需要显式声明 bean,无论是 as<bean>还是@Bean.

原因是Java没有提供发现实现给定接口的类的机制,类加载器就是不能那样工作。

于 2010-06-04T09:36:04.050 回答
0

如果您正在通过 dao 实现 Idao,并且您希望 @Autowire 将该依赖项添加到您的引用变量中......您需要首先:定义 bean,以便您(在基于 Java 的配置中)只需将 impl 类返回到接口。bean 名称是您的方法名称。

当您自动装配它时,它将在您要自动装配的参考变量和您的声明之间搜索匹配的名称。

那么你会没事的。希望这可以帮助。

于 2014-11-02T03:47:36.380 回答