Java Can弹簧靴';s@Autowired从使用GUICE进行DI的jar(包含在类路径中)注入依赖项?

Java Can弹簧靴';s@Autowired从使用GUICE进行DI的jar(包含在类路径中)注入依赖项?,java,spring,spring-boot,dependency-injection,guice,Java,Spring,Spring Boot,Dependency Injection,Guice,我有一个基本包,它使用guice进行DI。我在另一个使用Spring boot的项目中将它用作一个库,这样我就可以将依赖项从那个jar自动连接到我的Spring boot项目。 假设基本包的工件是com.package.dependency,我的spring boot项目是com.example.spring boot 我试过了 @ComponentScan(basePackages = {"com.example.spring-boot","com.packag

我有一个基本包,它使用guice进行DI。我在另一个使用Spring boot的项目中将它用作一个库,这样我就可以将依赖项从那个jar自动连接到我的Spring boot项目。 假设基本包的工件是com.package.dependency,我的spring boot项目是
com.example.spring boot
我试过了

 @ComponentScan(basePackages = {"com.example.spring-boot","com.package.dependency"})

但是它不起作用。

如果有注释为autowire候选类的类(@Bean,@Component,…),您应该能够使用componentscan从外部jar自动关联依赖项

@ComponentScan将不会找到任何自动布线候选项,除非外部库中有任何符合自动布线条件的候选项可用

相反,您可以定义@Bean注释,并返回要在@Configuration类中返回的类的新实例

@Configuration
public class MyConfig {

  @Bean
  public MyExternalBean myExternalBean() {
     return new MyExternalBean();
  }
}
在你需要使用它的课堂上,写下:

@Autowired
private MyExternalBean myExternalBean;

如果需要自动配置,请参阅:。在这里,您使用spring.factories并指定可用于自动配置的类,这样您就不必在使用该外部jar的每个项目中指定@ComponentScan(适用于您或您的公司开发的jar用于其他项目而不是第三方jar)。

是的,谢谢,我知道,但是我的基本包实际上是一个库,所以我需要在我的项目中注入很多依赖项,所以我在想,spring不能在jar中查找模块,并尝试自己进行注入,或者为每个依赖项定义一个单独的bean。如果您需要自动配置类,这些类可以捆绑在外部jar中,并且仍然可以通过spring引导获得,那么您需要使用spring.factories。参考答案: