只是一个简单而快速的问题。我有一个程序,它有几个类,用于读取.properties文件中的信息。将文件从类传递给类作为构造函数中的参数,还是直接在每个类中打开文件是更好的做法?我怎样才能让我的配置文件从课堂到课堂?
0
A
回答
2
如果你打算亲自去做,我建议你创建一个配置类,它通过构造函数接受文件,并将属性值读入成员变量。然后每个需要配置的类都通过它的构造函数接受一个Configuration类。但是,几乎没有人这样做,而是使用像Spring这样的框架,它为您处理属性注入。
在春天,它会是这个样子:
<!-- application context xml file -->
<context:property-placeholder location="file:///some/path/to/file" />
在Java类中
然后:
public class SomeClass {
@Value("${some.property}")
private String someProp;
@Value("${some.other.prop}")
private Integer someOtherProp;
// ...
}
启动应用程序时性能得到注入类。
0
我的建议是有一个Util类加载属性文件并从该Util获取值到所需的类。
注意:我不认为你有任何加载属性文件的问题。
0
我建议你创建一个不可变的类,它接受文件作为构造函数参数并设置所有的实例变量。我会称之为PropertyConfiguration。然后,因为课程是不可改变的,所以您不必担心将其传递给每个人。你甚至可以拥有一个拥有它的课程。
例如,下面的代码会让你有一个很好的设置,以便在项目范围内有几件事情可用。我只是要确保共享的任何东西都是不可变的,以确保线程安全。
public class ClientUtils {
private static ClientContext _clientContext = null;
public static void setClientContext(ClientContext cc) {
_clientContext = cc;
}
public static ClientContext getContext() {
return _clientContext;
}
}
public class ClientContext {
private final Configuration _configuration;
public ClientContext(Configuration config){
_configuration = config;
}
public Configuration getClientContext() {
return _configuration;
}
}
0
如果你的程序中包含它不必是编译的一部分,可以从部署到部署的变化数据,你必须把它加到属性文件:(比如像数据库连接字符串,电子邮件地址)。
为了防止您需要此操作,我添加了访问属性文件的代码。 删除文件build目录。
Properties properties = new Properties();
properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("credentials.properties"));
相关问题
- 1. 从课堂设置一个数组,并让他在课堂外
- 2. PHP:我怎样才能让spl_autoload在全球范围内的课堂上工作?
- 3. 我怎样才能让课程“重设”?
- 4. 在Ruby中。我如何从课堂内部自我定义中提到课堂?
- 5. 我如何选择课堂?
- 6. 我怎样才能在我的课
- 7. 如何让我的课程使用课堂外的数组?
- 8. 如何在我的主课堂中使用我的第二堂课?
- 9. 我应该在课堂中包装我的课堂自定义例外吗?
- 10. com.google.gson.internal.LinkedTreeMap无法投射到我的课堂
- 11. 我怎么能在课堂上得到变量
- 12. 如何从课堂外进入课堂变量
- 13. 如何将课堂上的练习从课堂传递给另一课程?
- 14. require_once不能用于课堂?
- 15. 如何从课堂脱身
- 16. Django课堂问题
- 17. Google课堂缩图
- 18. 遇到课堂问题
- 19. 在课堂教学中使用自我
- 20. 我该如何腌制一堂课?
- 21. 我的课堂如何表现得像一个静态课程?
- 22. PHP常量在课堂内设置,但我需要现在在课堂外改变它,这可以做到吗?
- 23. 我怎样才能得到在课堂上定义的变量,并将它用在别的地方
- 24. 如何让Jbutton开办另一堂课?
- 25. 超级课后序列化子课堂?
- 26. 课堂内的Dictonaries和Lambda?
- 27. 更好的课堂设计
- 28. Laravel的课堂设计
- 29. 隐藏课堂上的RNG
- 30. 在课堂上的OnPropertyChanged