微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将Autowire Bean和application.yml文件放在另一个jar文件中

如何解决将Autowire Bean和application.yml文件放在另一个jar文件中

我正在尝试使用Spring Boot多模块项目,以了解我的理解。

我的总体目标是: 1.将Spring boot项目构建为独立的jar,并在另一个项目中使用它。 2.根据新项目在jar中自动装配Bean属性。使它独立。

到目前为止我所做的事情。

项目 providerModule1

  1. 声明服务(MyService)。

     @Component
     public class MyService {
    
         @Autowired
         ServiceProperties serviceProperties;
    
         public String getInfoFromProperties() {
             return serviceProperties.toString();
         }
     }
    
  2. 创建一个名为 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;
     }
    
  3. 通过从yml文件读取属性来加载bean ServiceProperties。

    认值: userName:userName1 电子邮件:default@email.com 年龄:18

  4. 使用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>
  1. 从项目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();
         }
     }
    
    1. 最初未加载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 利用它。

解决方法

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。