我在Java spring-boot应用程序的src/main/resources中定义了以下application-errors.yml文件:
client:
badrequest: {code: 001, message: 'Malformed request', status: 400}
configuration: {code: 002, message: 'Invalid EC2 VPC configuration', status: 400}
server:
unexpected.error:
code: 004
message: 'Unexpected error occurred. Please try again'
status: 500
请注意,我尝试了两种不同的格式来指定属性。
我通过@Configuration注释类中的以下Bean加载该属性文件:
@Bean
public static YamlPropertiesFactoryBean getYamlProperties() {
YamlPropertiesFactoryBean yaml = new YamlPropertiesFactoryBean();
yaml.setResources(new ClassPathResource("application-errors.yml"));
return yaml;
}
我看到属性是通过Spring环境变量加载的,但不是我所期望的模式。调试时,我可以看到加载的属性文件的源包含以下值:
{client.badrequest=code:001 message:'Malformed request' status:400, client.configuration=code:002 message:'Invalid EC2 VPC configuration' status:400, server.unexpected.error=code:004 message:'Unexpected error occurred. Please try again' status:500}
看起来 yaml 文件被部分平展(只有两级深)。相反,我期望每个终端属性都自行扁平化。我所期望的格式是这样的:
{client.badrequest.code=001, client.badrequest.message='Malformed request', client.badrequest.status=400, client.configuration.code=002, client.configuration.message='Invalid EC2 VPC configuration', client.configuration.status=400, server.unexpected.error.code=004, server.unexpected.error.message='Unexpected error occurred. Please try again', server.unexpected.error.status=500}
为了确保Spring完全展平属性,我需要做什么更改?如果我不理解yaml格式模式或Spring正确展平yaml文件所遵循的模式,请纠正我的理解。
我发现今早在回答这个问题时犯了多个错误:
1)我的代码实际上并没有加载任何自定义的名为yml的属性文件。相反,它正在获取我的项目中也有的默认application.yml文件。
2)默认application.yml文件的yml格式代码语法错误。具体来说,我在每个属性标识符后省略了所需的空格:
client:
badrequest:
code:001
message:'Malformed request'
status:400
configuration
code:002
message:'Invalid EC2 VPC configuration'
status:400
server:
unexpected.error
code:004
message:'Unexpected error occurred. Please try again'
status:500
在理解了这两个问题之后,我能够正确地从application.yml加载属性。
我为我的属性找到的最终语法如下:
# Error Properties
client:
badrequest: {code: 001, message: 'Malformed request', status: 400}
configuration: {code: 002, message: 'Invalid EC2 VPC configuration', status: 400}
server:
unexpected.error: {code: 004, message: 'Unexpected error occurred. Please try again', status: 500}
我想从YAML向Spring上下文注入一些值。YAML的结构类似,因此我不想重复代码,但Spring启动失败,因为它无法将值注入占位符。 请注意我的: 然后我将这些值注入YAML, 然后我将其导入到配置属性上下文: 但是< code > @ Value(" $ { auto agents . supplier } ")不起作用。 请建议。
我有一个名为CommonConfig的配置类,到目前为止它工作得很好… 以及与之配套的Yaml属性文件: 我的问题开始于当我想把一个映射到子B中时: 我尝试在SubB类中添加一个简单的映射声明: 当我运行这个时,所有其他属性都在配置中,但映射是空的。我还尝试不初始化映射,但它保持为空。 我的SpringBootApplication类以前只使用了一个注释就可以很好地工作。基于其他一些StackOv
问题内容: 我需要从文件加载属性,该文件包含应用程序可以从中读取文件的文件夹的路径。 我正在使用以下代码来注入属性: 用于开发的文件位于下,在生产环境中使用以下命令运行应用程序,以覆盖开发设置: Spring Boot文档说: SpringApplication将在以下位置从application.properties文件加载属性,并将其添加到Spring Environment中: 当前目录的/
我需要从文件加载一个属性,该文件包含应用程序可以从中读取文件的文件夹的路径。 当前目录 类路径/配置包 类路径根 是否必须使用类或添加一个特殊注释来启用Spring Boot中对的支持? 编辑:文件包含一些其他属性,这些属性由Spring Boot成功加载,如或。
我想使用应用程序.yml 而不是应用程序属性 我跟着: https://docs.spring.io/spring-boot/docs/2.1.13.RELEASE/reference/html/boot-features-external-config.html 我正在使用: 春靴 2.6.2 爪哇 17 渐变 7.3.2 我的https://github.com/OldEngineer1911
我在应用程序中有我的配置。类路径根中的yml文件(src/main/resources/)。当我正常启动应用程序时,配置加载良好。然而,在我的测试中,应用程序。yml文件根本没有加载。 我的测试的标题如下所示: 配置类: 当我调试应用程序时,我看到yml文件被加载到ConfigFileApplication ationListener中,但在测试中没有调用ConfigFileApplication