技術(shù)員聯(lián)盟提供win764位系統(tǒng)下載,win10,win7,xp,裝機(jī)純凈版,64位旗艦版,綠色軟件,免費軟件下載基地!

當(dāng)前位置:主頁 > 教程 > 服務(wù)器類 >

Spring Boot如何加載properties和yml配置文件

來源:技術(shù)員聯(lián)盟┆發(fā)布時間:2017-11-03 18:14┆點擊:

  一、系統(tǒng)啟動后注入配置

  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("參數(shù)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() {