文
章
目
录
章
目
录
你知道如何在 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 中的值的全部内容,希望对你有帮助。