Java spring boot配置自动连线不';我不能做依赖者

Java spring boot配置自动连线不';我不能做依赖者,java,spring,maven,spring-boot,autowired,Java,Spring,Maven,Spring Boot,Autowired,我有一个源项目,这里有一些代码 @Configuration public class AnalyzeSyntaxServiceConfig { @Bean public AnalyzeSyntaxService analyzeSyntaxService() { return new AnalyzeSyntaxService(); } } 并在源项目中像这样使用它 @Autowired private AnalyzeSyntaxService anal

我有一个源项目,这里有一些代码

@Configuration
public class AnalyzeSyntaxServiceConfig {

    @Bean
    public AnalyzeSyntaxService analyzeSyntaxService() {
        return new AnalyzeSyntaxService();
    }
}
并在源项目中像这样使用它

@Autowired
private AnalyzeSyntaxService analyzeSyntaxService;
它工作得很好

然后我将其打包为一个jar文件,并将其作为依赖项添加到目标项目中的
pom.xml
,并尝试以相同的方式使用上述服务

@Autowired
private AnalyzeSyntaxService analyzeSyntaxService;

但是它是空的,为什么?

源代码库和使用/依赖代码库之间的包名不同吗

SpringBoot应用程序将从
SpringBootApplication
所在的包和所有子包中进行扫描

如果您在同一个项目中拥有它,并且您的配置类的结构使其位于同一个包或子包中,例如

com.myapp
com.myapp.configs
将扫描并拾取它

将其导入其他项目时,您需要通过
@ComponentScan
注释手动对配置进行组件扫描,并为其提供一个包来扫描您的配置

由于
JacksonConfig.class
位于父(不同)包中,因此ComponentScan无法工作。应用程序类扫描com.darrenforsythe.mixinabstractclass中的所有内容及其子包。要使Spring启动扫描
JacksonConfig
,我们必须明确地将
@ComponentScan(“com.darrenforsythe”)
添加到应用程序中

如果在
MixinasbtractclassApplication
中取消对
@组件扫描的注释,测试将再次通过,因为它将再次加载
JacksonConfig


此外,我建议使用构造函数。这将避免自动连接依赖项为null,并在初始化时而不是在运行时通知您ApplicationContext

确保扫描了可用类所在的包。这是它的注释,将此注释放在SpringBoot应用程序类中

@ComponentScan("com.abc.xyz")

此外,请查看是否有机会实例化具有此自动连接的类。如果该类是实例化的,那么自连线的类将为空。

您的配置扫描
AnalyzeSyntaxServiceConfig
包?我想是的,因为它在源项目中运行良好。您是否向Spring注册了
AnalyzeSyntaxServiceConfig
。@phani所有相关代码都在这里,它来自spring boot应用程序中的官方spring boot教程,它自动检测包并扫描包中的所有类。当您在单独的项目中将该项目用作依赖项模块时,您必须向Spring注册
@Configuration
类。感谢您的快速响应,您可以添加一些详细的代码吗?我同意,但是我不明白我会建议使用讲师注入,你能解释一下吗?@DavidPérezCabrera typo:)意味着构造函数注入:)也用git中的一个工作示例进行了更新。我的目标项目不是spring boot框架,那么在这方面我应该怎么做situation@yuwen-不幸的是,在这种情况下,它不会起作用。您提供的库中的任何一个都是在编写时考虑到依赖项注入的,但只能与Spring应用程序一起使用。否则,您需要以标准Java方式编写库(例如Object myObject=new Object),然后任何Java应用程序都可以使用它。