我一直在四处寻找并挠头几个小时,但我无法让它工作。
我有一个带有 Gradle 的多模块项目,目前有两个模块:BFF(使用 Spring Boot)和一个从数据库中获取一些数据的模块(受这篇文章的启发)。结构看起来像这样:
├── 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 上下文中的一种方式:
@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
,例如 Hibernate 设置。我打算使用customer-service-properties.yaml
. 当我尝试使用有问题的行运行应用程序时,Spring 抱怨在类路径中找不到该文件。果然,当查看生成的 jar 时,它不存在。将它添加到bff
的资源中是可行的,但这显然不是我想要的。
我是否需要找到一种将customer-service-properties.yaml
文件添加到类路径的方法?我应该不使用类路径,而是使用其他东西吗?我只是想做一些我不应该做的事情吗?有没有不同的方法来解决这个问题?
注意:我对 Gradle 还是很陌生,如果这完全相关的话。
让我知道是否需要添加或指定其他内容。任何帮助或指示将不胜感激。谢谢!