Java读yml配置文件_详解Spring Boot加载properties和yml配置文件

本文详细介绍了如何在Spring Boot应用中加载和使用properties及yml配置文件,包括系统启动后注入配置和通过命令行传入参数的方式。通过示例代码展示了如何获取配置值,以及使用@Value注解注入配置属性。
摘要由CSDN通过智能技术生成

本篇文章主要介绍了详解Spring Boot加载properties和yml配置文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

一、系统启动后注入配置

package com.example.config;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.annotation.Configuration;

import org.springframework.context.annotation.PropertySource;

import org.springframework.core.env.Environment;

/**

* @author: GrandKai

* @create: 2016-09-01 11:24

*/

@Configuration

@PropertySource(ignoreResourceNotFound = true, value = {"classpath:/config/email.properties","classpath:/config/email.yml"}, name = "email")

public class Config {}

需要在ApplicationContext中注册配置

AnnotationConfigEmbeddedWebApplicationContext context = (AnnotationConfigEmbeddedWebApplicationContext) app.run("参数1");

context.register(Config.class);

用以下方式取值

Environment env = context.getEnvironment();

System.out.println(env.getProperty("address"));

email.yml文件配置如下:

server:

address: 127.0.0.1

二、在命令行传入注入到程序中

public class Main {

public static void main(String... args) {

//initialize the command line parsing stuff

OptionParser parser = new OptionParser();

parser.accepts("greeting").withRequiredArg();

OptionSet options = parser.parse(args);

//create the actual Spring PropertySource

PropertySource> ps = new JOptCommandLinePropertySource(options);

//setup the Spring context

AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();

ctx.getEnvironment().getPropertySources().addLast(ps);

//register the property source with the environment

ctx.register(Greeter.class);

ctx.refresh();

Greeter greeter = ctx.getBean(Greeter.class);

greeter.sayGreeting();

}

}

@Component

class Greeter {

@Inject private Environment env;

//the following would also work

//@Value("${greeting}")

//private String greeting;

/**

* Print out the 'greeting' property if it exists, and otherwise, "Welcome!".

*/

public void sayGreeting() {

System.out.println(env.getProperty("greeting", "Welcome!"));

}

}

public static void main(String [] args) {

SimpleCommandLinePropertySource ps = new SimpleCommandLinePropertySource(args);

@SuppressWarnings("resource")

AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();

ctx.getEnvironment().getPropertySources().addFirst(ps);

ctx.register(ApplicationConfig.class);

ctx.refresh();

}

@Configuration

@EnableScheduling

@ComponentScan("com.mycompany.package")

@PropertySource(

value = {"classpath:/application.properties", "file:${config.location}"},

ignoreResourceNotFound = true

)

class ApplicationConfig {

@Bean

public static PropertySourcesPlaceholderConfigurer propertyConfigurer() {

return new PropertySourcesPlaceholderConfigurer();

}

}

@Component

class MyComponent {

@Value("${my.property.data}")

private String myPropertyData;

@Scheduled(fixedDelayString = "${schedule.delay.period}")

public void run() {

:

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值