我想创建带有公共静态最终字段的Constants类,我从Properties文件中获取它。 问题是ClassLoader始终为null ,我无法获取属性文件InputStream。
我正在使用Spring Java Configuration,我知道@PropertySource和@Value spring注释,但我认为旧式的Constants类在代码中更具可读性。
<!DOCTYPE html>
<html ng-app="app">
<head>
<script data-require="angular.js@1.6.1" data-semver="1.6.1" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular.js"></script>
<script src="app.js"></script>
</head>
<body ng-controller="AppController as vm">
<div>
<select ng-model="vm.selectedYear"ng-options="year for year in vm.years">
</select>
</div>
</body>
</html>
vs simple
@Autowired
Constants constants;//in every class that needs constant
//...
constants.getArticleLimit()
这是我的代码:
Constants.ARTICLES_LIMIT //static var version
答案 0 :(得分:1)
经过一些测试后,问题就出现了:
System.out.println(Constants.class.getClass());
这会打印可能未被类加载器加载的java.lang.Class
。这是因为SomeClass.class
的类是java.lang.class
。
删除getClass()
,类加载器不会为空。不需要clazz
变量。这应该是你需要做的全部:
ClassLoader cl = Constants.class.getClassLoader();