Spring Boot多模块gradle项目中依赖模块的配置属性

时间:2021-04-02 09:16:48

标签: java spring-boot gradle spring-boot-configuration

我已经搜索并挠头几个小时了,但我无法让它工作。

我有一个带有 Gradle 的多模块项目,目前有两个模块:BFF(使用 Spring Boot)和一个从数据库中获取一些数据的模块(受 this post 启发)。结构看起来像这样:

├── bff
|  ├── build.gradle.kts
|  ├── src
|      └── main
|           ├── java
|           |    └── some.package.bff.controller
|           |        └── CustomerController
|           └── resources
|               └── application.yaml
├── customer-service
|  ├── build.gradle.kts
|  ├── src
|      └── main
|           ├── java
|           |     ├── some.package.customer.config
|           |     |    ├── CustomerServiceConfiguration
|           |     |    └── CustomerServiceConfigurationProperties
|           |     └── ...
|           └── resources
|               └── customer-service-properties.yaml
├── build.gradle.kts
└── settings.gradle.kts

CustomerServiceConfigurationProperties 是一个简单的 ConfigurationProperties 类。 CustomerServiceConfiguration 类用作将模块“导入”到 BFF 的 Spring 上下文中的一种方式,受 this post 的启发:

@Configuration
@EnableConfigurationProperties(CustomerServiceConfigurationProperties.class)
@PropertySource("classpath:customer-service-properties.yaml") //This fails
@ComponentScan(basePackages = {
    "some.package.customer"
})
public class CustomerServiceConfiguration {
    private static final Logger log = LoggerFactory.getLogger(CustomerServiceConfiguration.class);
    private final CustomerServiceConfigurationProperties configurationProperties;

    public CustomerServiceConfiguration(final CustomerServiceConfigurationProperties configurationProperties) {
        this.configurationProperties = configurationProperties;
    }

    @Bean
   SomeBean someBean() {
       ...
    }
}

添加由 CustomerServiceConfigurationProperties 映射到 BFF 的 application.yaml 的属性按预期工作,并被选取以配置客户服务模块。 不起作用是为 customer-service 模块添加不应由 bff 修改的配置属性,例如休眠设置。我打算使用 customer-service-properties.yaml 来做到这一点。当我尝试使用有问题的行运行应用程序时,Spring 抱怨在类路径中找不到该文件。果然,在查看生成的 jar 时,它不存在。将它添加到 bff 的资源中是可行的,但这显然不是我想要的。

我是否需要找到将 customer-service-properties.yaml 文件添加到类路径的方法?我不应该使用类路径而是使用其他东西吗?我只是想做一些我不应该做的事情吗?有没有其他方法可以解决这个问题?

注意:我对 Gradle 还是很陌生,如果这完全相关的话。

如果我需要添加或指定其他内容,请告诉我。任何帮助或指示将不胜感激。谢谢!

0 个答案:

没有答案