如何在 Spring Boot 中访问 application.properties 中的值

Java技术 潘老师 9个月前 (08-29) 212 ℃ (0) 扫码查看

你知道如何在 Spring Boot 中访问 application.properties 中的值吗?这里介绍3种方式来实现该功能,以下使用代码来直接演示说明。

准备application.properties

Spring默认从根类路径加载application.properties文件。稍后,我们将展示几种访问下面application.properties中定义的值的方法。

#Logging
logging.level.org.springframework.web=ERROR
logging.level.com.mkyong=DEBUG

#email server
email.smtp.server=smtp.gmail.com
email.smtp.port=467
email.smtp.username=hello@gmail.com

这是项目的结构供参考。

1. @Value

SpringBoot中,我们可以使用@Value注解从Spring管理的bean中访问在application.properties中定义的值。

@Component
public class EmailServer {

    // 注入 smtp.gmail.com
    @Value("${email.smtp.server}")
    private String server;

    // 注入467
    @Value("${email.smtp.port}")
    private Integer port;

    // 注入 hello@gmail.com
    @Value("${email.smtp.username}")
    private String username;

    //setters, getters
}

下面是一个 REST 控制器,用于以 JSON 格式返回上述EmailServer对象。

@RestController
public class MainController {

  @Autowired
  private EmailServer email;

  @GetMapping("/email")
  public EmailServer getEmail() {
      return email;
  }
}

2. Environment

另外,我们还可以自动装配org.springframework.core.env.Environment,并访问在application.properties中定义的值。

import org.springframework.core.env.Environment;
@RestController
public class EnvironmentController {

    @Autowired
    private Environment env;

    @GetMapping("/env")
    public Map<String, String> getEmailFromEnvironment() {

        String server = env.getProperty("email.smtp.server");
        String username = env.getProperty("email.smtp.username");
        String port = env.getProperty("email.smtp.port");

        Map<String, String> map = new HashMap<>();
        map.put("server", server);
        map.put("username", username);
        map.put("port", port);

        return map;
    }

}

3. @ConfigurationProperties

@ConfigurationProperties将application.properties中的值绑定到一个Java对象中。

@Component
@ConfigurationProperties("email.smtp") // 前缀
public class EmailServer2 {

  private String server;    // 注入 smtp.gmail.com

  private Integer port;     // 注入 467

  private String username;  // 注入 hello@gmail.com

  //getters, setters
}

总结

以上就是如何在 Spring Boot 中访问 application.properties 中的值的全部内容,希望对你有帮助。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/java/8477.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】