欢迎来到山村网

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

2019-03-09 11:58:36浏览:137 来源:山村网   
核心摘要:  一、系统启动后注入配置  package com.example.config;  import org.springframework.beans.factory.annotation.Autowir

  一、系统启动后注入配置

  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;

  

  @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;

  

  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() {

  :

  }

  }

(责任编辑:豆豆)
下一篇:

CentOS下安装配置Tomcat环境

上一篇:

CuteFTP怎么用

  • 信息二维码

    手机看新闻

  • 分享到
打赏
免责声明
• 
本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们 xfptx@outlook.com