我有一个spring boot应用程序,我想从application.properties文件中读取一些变量。事实上,下面的代码就是这样做但我认为这种替代方法有一个很好的方法。
Properties prop = new Properties();
InputStream input = null;
try {
input = new FileInputStream("config.properties");
prop.load(input);
gMapReportUrl = prop.getProperty("gMapReportUrl");
} catch (IOException ex) {
ex.printStackTrace();
} finally {
...
}
答案 0 :(得分:30)
您可以使用@PropertySource
将配置外部化为属性文件。有很多方法可以获得房产:
<强> 1。
使用@Value
与PropertySourcesPlaceholderConfigurer
一起分配属性值,以解析${}
中的@Value
:
@Configuration
@PropertySource("file:config.properties")
public class ApplicationConfiguration {
@Value("${gMapReportUrl}")
private String gMapReportUrl;
@Bean
public static PropertySourcesPlaceholderConfigurer propertyConfigInDev() {
return new PropertySourcesPlaceholderConfigurer();
}
}
<强> 2。
使用Environment
@Configuration
@PropertySource("file:config.properties")
public class ApplicationConfiguration {
@Autowired
private Environment env;
public void foo() {
env.getProperty("gMapReportUrl");
}
}
希望这可以提供帮助
答案 1 :(得分:7)
我建议采用以下方式:
@PropertySource(ignoreResourceNotFound = true, value = "classpath:otherprops.properties")
@Controller
public class ClassA {
@Value("${myName}")
private String name;
@RequestMapping(value = "/xyz")
@ResponseBody
public void getName(){
System.out.println(name);
}
}
这里你的新属性文件名是&#34; otherprops.properties&#34;并且属性名称是&#34; myName&#34;。这是在spring boot 1.5.8版中访问属性文件的最简单实现。
答案 2 :(得分:5)
我创建了以下课程
@Configuration
public class ConfigUtility {
@Autowired
private Environment env;
public String getProperty(String pPropertyKey) {
return env.getProperty(pPropertyKey);
}
}
并按如下所述获取application.properties值
@Autowired
private ConfigUtility configUtil;
public AppResponse getDetails() {
AppResponse response = new AppResponse();
String email = configUtil.getProperty("emailid");
return response;
}
emailid=sunny@domain.com
已测试单元,按预期运行...
答案 3 :(得分:1)
我们可以使用3种方式在spring boot中读取属性文件
1。使用@Value
从application.properties中读取值地图键为
public class EmailService {
@Value("${email.username}")
private String username;
}
2。使用@ConfigurationProperties从application.properties中读取值
在这种情况下,我们将使用ConfigurationProperties映射密钥的前缀,并且密钥名称与类的字段相同
@Component
@ConfigurationProperties("email")
public class EmailConfig {
private String username;
}
3。使用环境对象阅读application.properties
公共类EmailController {
@Autowired
private Environment env;
@GetMapping("/sendmail")
public void sendMail(){
System.out.println("reading value from application properties file using Environment ");
System.out.println("username ="+ env.getProperty("email.username"));
System.out.println("pwd ="+ env.getProperty("email.pwd"));
}
参考:how to read value from application.properties in spring boot