问题描述
我正在尝试使用Spring Boot多模块项目,以了解我的理解。
我的总体目标是: 1.将Spring boot项目构建为独立的jar,并在另一个项目中使用它。 2.根据新项目在jar中自动装配Bean属性。使它独立。
到目前为止我所做的事情。
项目 providerModule1
-
声明服务(MyService)。
@Component public class MyService { @Autowired ServiceProperties serviceProperties; public String getInfoFromProperties() { return serviceProperties.toString(); } }
-
创建一个名为 ServiceProperties 的bean,该bean将用于 MyService 。
package com.demo.multimodule.providerModule1.util; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import lombok.Data; @Component @Data public class ServiceProperties { @Value("${default.userName}") private String name; @Value("${default.email}") private String email; @Value("${default.age}") private String age; }
-
使用maven插件构建项目ProviderModule1
项目 ParentProjectApplication 5.加载Maven依赖项。
<dependency>
<groupId>com.demo.multimodule</groupId>
<artifactId>providerModule1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<classifier>app-to-import</classifier>
</dependency>
-
从项目providerModule1自动连接MyService
package com.multimodule.demo.parentProject.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.demo.multimodule.providerModule1.service.MyService; @Service public class HomeService { @Autowired private MyService myService; public String getHomeInfo() { return "Home Info from Home service : "+myService.getInfoFromProperties(); } }
-
最初未加载myservice。因此,我将此步骤添加到了主应用程序类:
@SpringBootApplication(scanBasePackages= {"com.demo.multimodule.providerModule1.service","com.demo.multimodule.providerModule1.util"}) public class ParentProjectApplication {
}
-
问题1 :这是我可以从罐子中自动装豆的唯一方法。如果还有其他方法,请告诉我。
我执行了Project ParentProjectApplication,它似乎按预期工作。
问题2 :是否可以从Project ParentProjectApplication 中自动关联新的yml属性,并制作 ServiceProperties 的bean项目 ProviderModule1 利用它。
解决方法
您可以尝试spring.factory创建bean。 请参阅下面的链接