Java maven多模块项目中的Spring依赖注入

Java maven多模块项目中的Spring依赖注入,java,spring,maven,Java,Spring,Maven,我正在构建一个包含4个模块的多模块maven项目。对于其中两个(一个带有rest控制器,另一个带有核心业务逻辑),我需要依赖注入的功能。但这根本不起作用。这里是我的父母pom: .... <groupId>com.example.taskexecutor</groupId> <artifactId>taskexecutor</artifactId> <parent> <groupId>org.springfr

我正在构建一个包含4个模块的多模块maven项目。对于其中两个(一个带有rest控制器,另一个带有核心业务逻辑),我需要依赖注入的功能。但这根本不起作用。这里是我的父母pom:

....
<groupId>com.example.taskexecutor</groupId>
<artifactId>taskexecutor</artifactId>
<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.4.RELEASE</version>
        <relativePath /> <!-- lookup parent from repository -->
</parent>

....

<modules>
        <module>taskexecutor-service</module>
        <module>taskexecutor-core</module>
        <module>taskexecutor-common</module>
        <module>taskexecutor-rules</module>
</modules>

.....
。。。。
com.example.taskexecutor
任务执行者
org.springframework.boot
spring启动程序父级
2.3.4.1发布
....
任务执行器服务
任务执行器内核
任务执行器公用
任务执行器规则
.....
儿童pom服务:

<parent>
    <groupId>com.example.taskexecutor</groupId>
    <artifactId>taskexecutor</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>taskexecutor-service</artifactId>

.....

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-amqp</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.amqp</groupId>
            <artifactId>spring-rabbit-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.example.taskexecutor</groupId>
            <artifactId>taskexecutor-core</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>

com.example.taskexecutor
任务执行者
0.0.1-快照
任务执行器服务
.....
org.springframework.boot
弹簧启动机amqp
org.springframework.boot
SpringBootStarterWeb
org.projectlombok
龙目
真的
org.springframework.boot
弹簧启动机tomcat
假如
org.springframework.boot
弹簧起动试验
测试
org.junit.vintage
朱尼特老式发动机
org.springframework.amqp
春兔试验
测试
com.example.taskexecutor
任务执行器内核
${project.version}
子pom核心(具有我无法注入服务项目的类的核心)

。。。。
com.example.taskexecutor
任务执行者
0.0.1-快照
任务执行器内核
...
org.springframework.boot
SpringBootStarterWeb
两个项目(服务和核心)中的包是相同的:com.example.application(其中是服务项目中带有@SpringBootApplication的主类)、com.example.application.restcontroller(其中是服务项目中的控制器)、com.example.application.core(其中是我无法注入核心项目的@组件)

在我的核心项目中,com.example.application.core下有一个@Component,我将在类中注入com.example.application.restcontroller包下的服务项目中。 在同一个项目中,在主类的包下,依赖注入工作得非常好。在两个不同的模块之间,我无法实现这一点(nullPointerException)


任何建议都将不胜感激

您对软件包的描述很难理解。但很可能是组件扫描问题。请确保您正在扫描所有软件包。例如,在
taskexecutor服务
中,您可以执行以下操作:
@ComponentScan(basePackages={“com.example.taskexecutor”,“com.example.application”})

扫描的是什么包?由于我没有编写@ComponentScan,我假设要扫描的默认包是带有SpringBootApplication注释(和运行)的主类下的包.So.com.example.application和这个包下的所有包(比如我的组件所在的com.example.application.core)。如果不想使用@ComponentScan,也可以使用spring自动配置,请参见此
....
<parent>
    <groupId>com.example.taskexecutor</groupId>
    <artifactId>taskexecutor</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>taskexecutor-core</artifactId>

...

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
</dependency>