首页 > 开发 > Java > 正文

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

2024-07-13 10:06:25
字体:
来源:转载
供稿:网友

一、系统启动后注入配置

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();  }}@Componentclass 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();  }}@Componentclass MyComponent {  @Value("${my.property.data}")  private String myPropertyData;  @Scheduled(fixedDelayString = "${schedule.delay.period}")  public void run() {     :  }}

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


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表