spring Sping Boot Application中的外部yml文件

k3fezbri  于 2023-06-21  发布在  Spring
关注(0)|答案(3)|浏览(194)

我的要求是在Sping Boot (版本2.6.6)应用程序中读取外部yml文件(属性文件),该文件保存在服务器位置例如:10.21.13.215--> /tmp/application-DEV.yml

  • 创建了一个@Configuration类,并创建了一个PropertyPlaceHolderConfigurer方法的@Bean,但似乎对yml文件不起作用

例如:我保持yml文件在我的本地系统C驱动器

@Bean
public PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer()
{
PropertySourcesPlaceholderConfigurer prop = new PropertySourcesPlaceholderConfigurer();
prop.setLocation(new FileSystemResource("C:/IN/config/application-DEV.yml"));
return prop;
}
jgwigjjp

jgwigjjp1#

一个更简单的替代方案也许-在您的application.yml中,只需引用外部yml文件:

config:
  import: 'file:/tmp/foo/bar.yml'
yqhsw0fo

yqhsw0fo2#

我不明白你为什么要写下面的代码

new FileSystemResource("C:/IN/config/application-DEV.yml")

您想使用“/tmp/application-DEV.yml”。你能否提供更多信息?你用什么作为软件管理,可能是Maven或其他东西?

piv4azn7

piv4azn73#

@Configuration
public class AppConfig {
  @Bean
 public static PropertySourcesPlaceholderConfigurer 
 propertySourcesPlaceholderConfigurer() {
    PropertySourcesPlaceholderConfigurer configurer = new 
   PropertySourcesPlaceholderConfigurer();
    configurer.setLocations(
            new FileSystemResource("C:\\Users\\user\\Desktop\\a.yml")    );
    return configurer;
 }
}

a.ymlname: lant。这是我的代码,运行良好,我可以通过

@Value("${name}")
String name;

根据您的描述,我无法确定具体原因。还有一种方法,你可以使用@PropertySource。例如,有C:\Users\user\Desktop\a.yml,文件的内容是name: lant

@Configuration
@Data
@PropertySource("file:C:\\Users\\user\\Desktop\\a.yml")
public class ExternalPropertiesConfig {
  @Value("${name}")
  private String name;
}

@Autowired
ExternalPropertiesConfig propertiesConfig;

String name = propertiesConfig.getName();

相关问题