请帮助我在spring boot中从application.properties文件中读取属性,而不使用Autowiring the Environment变量并且不使用Environment变量。
也不需要使用$ {propname}。我可以创建属性对象但必须传递我的属性文件路径。我想从另一个地方获取我的道具文件。
谢谢, Braj
答案 0 :(得分:7)
这是Java的核心功能。如果您不想使用,则不必使用任何Spring或Spring Boot功能。
Properties properties = new Properties();
try (InputStream is = getClass().getResourceAsStream("application.properties")) {
properties.load(is);
}
JavaDoc:http://docs.oracle.com/javase/8/docs/api/java/util/Properties.html
答案 1 :(得分:1)
要阅读application.properties,只需将此注释添加到您的班级:
@ConfigurationProperties
public class Foo {
}
如果要更改默认文件
@PropertySource("your properties path here")
public class Foo {
}
答案 2 :(得分:1)
尝试使用普通的Properties
。
final Properties properties = new Properties();
properties.load(new FileInputStream("/path/config.properties"));
System.out.println(properties.getProperty("server.port"));
如果您需要在配置中使用该外部属性文件,可以使用@PropertySource("/path/config.properties")
答案 3 :(得分:1)
OrangeDog解决方案对我不起作用。它生成了NullPointerException。
我找到了另一个解决方案:
<div id="button">
</div>
答案 4 :(得分:1)
如果其他所有设置均正确,则可以注释@Value。 Springboot将负责从属性文件中加载值。
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.beans.factory.annotation.Value;
@Configuration
@PropertySource("classpath:/other.properties")
public class ClassName {
@Value("${key.name}")
private String name;
}
答案 5 :(得分:0)
添加到Vladislav Kysliy的优雅解决方案中,可以将以下代码直接插入为REST API调用,以在不知道任何键的情况下获取Spring Boot中application.properties文件的所有键/值。此外,如果您知道Key,则可以随时使用@Value批注来查找值。
@GetMapping
@RequestMapping("/env")
public java.util.Set<Map.Entry<Object,Object>> getAppPropFileContent(){
ClassLoader loader = Thread.currentThread().getContextClassLoader();
java.util.Properties properties = new java.util.Properties();
try(InputStream resourceStream = loader.getResourceAsStream("application.properties")){
properties.load(resourceStream);
}catch(IOException e){
e.printStackTrace();
}
return properties.entrySet();
}
答案 6 :(得分:0)
以下代码从现有的application.properties文件中提取环境值,该文件位于WEB-INF / classes下的Deployed Resources中:
// Define classes path from application.properties :
String environment;
InputStream inputStream;
try {
// Class path is found under WEB-INF/classes
Properties prop = new Properties();
String propFileName = "com/example/project/application.properties";
inputStream = getClass().getClassLoader().getResourceAsStream(propFileName);
// read the file
if (inputStream != null) {
prop.load(inputStream);
} else {
throw new FileNotFoundException("property file '" + propFileName + "' not found in the classpath");
}
// get the property value and print it out
environment = prop.getProperty("environment");
System.out.println("The environment is " + environment);
} catch (Exception e) {
System.out.println("Exception: " + e);
}
Output:
The environment is Test