使用している環境
Tomcat:9
JDK:OpenJDK8(OPENJ9)
spring-boot:2.0.5
作成した処理(多分邪道だが動いたやつ)
読み込みたい設定ファイルはこれ↓↓↓
[プロジェクトルート]/src/main/resources/test.yml
value:
item1:
aaa: 12345
bbb: 22345
item2:
dog: poti
cat: tama
Javaの記述はこれ↓↓↓
xxxxx.java
DefaultResourceLoader resourceLoader;
InputStreamReader reader;
try {
resourceLoader = new DefaultResourceLoader();
Resource resource = resourceLoader.getResource("classpath:test.yml");
reader = new InputStreamReader(resource.getInputStream());
Yaml yaml = new Yaml();
map = (Map<String, Object>) yaml.load(reader);
System.out.println(ValueMap.toString());
} catch (Exception e) {
e.printStackTrace();
}
ResourceLoaderを使えばいいと思い、当初、
@Autowired
ResourceLoader resourceLoader;
という宣言を試したのですが、Autowiredアノテーションが効いていないのか、NullPointerExceptionで落ちました。
ということで、DefaultResourceLoader クラスを使うという、邪道というか強引な方法で取得しました。
作成した処理(結局ダメだったやつ)
※ この処理は、開発環境のeclipseでは動いていたのですが、Warに固めてTomcatに配置したところ、ディレクトリ構成が変わったためか動かなくなりました。
読み込みたい設定ファイルはこれ↓↓↓
[プロジェクトルート]/src/main/resources/test.yml
value:
item1:
aaa: 12345
bbb: 22345
item2:
dog: poti
cat: tama
Javaの記述はこれ↓↓↓
xxxxx.java
InputStreamReader reader;
try {
reader = new InputStreamReader(ClassLoader.getSystemResourceAsStream("test.yml"));
Yaml yaml = new Yaml();
Map<String, String> ValueMap = (Map<String, String>) yaml.load(reader);
System.out.println(ValueMap.toString());
} catch (Exception e) {
e.printStackTrace();
}
という感じで取得できました。
依存関係の追加
上記の形で取得できたので、「どれどれwarに固めよう」と思ったところで、
* パッケージorg.yaml.snakeyamlは存在しません*
と怒られ、エラーで落ちました。
↓↓↓
mavenの依存関係に「snakeyaml」を追加して解決です。