【发布时间】:2021-02-13 21:03:24
【问题描述】:
为了我的理解,我正在试验 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; } -
通过从 yml 文件中读取属性来加载 bean ServiceProperties。
默认值: 用户名:用户名1 电子邮件:default@email.com 年龄:18
-
使用 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(); } }-
最初我的服务没有被加载。因此我将此步骤添加到主应用程序类:
@SpringBootApplication(scanBasePackages= {"com.demo.multimodule.providerModule1.service", "com.demo.multimodule.providerModule1.util"}) public class ParentProjectApplication {}
-
问题 1:这是我可以从 jar 中自动装配 bean 的唯一方法吗?如果有其他方法,请告诉我。
我执行了 Project ParentProjectApplication,它似乎按预期工作。
问题 2:是否可以从项目 ParentProjectApplication 自动装配 新的 yml 属性 并使 ServiceProperties 成为项目 ProviderModule1 使用它。
【问题讨论】:
-
1.您可以通过这种替代方式在 counstructor 中自动装配您的 bean。
标签: spring-boot maven executable-jar