如何解决将Autowire Bean和application.yml文件放在另一个jar文件中
我正在尝试使用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。 请参阅下面的链接
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。