Spring bootにてresourcesを参照するお話

先日のサンプルにバグがあった…

コンストラクタにてリソースを定義して、抽象クラスで参照させていたが

    public DBAccessService() {
        super("sql/service1.properties");
    }

その部分がダメだった…
getResourceAsStream…何だが

            bufferedReader = new BufferedReader(
                    new InputStreamReader(
                            this.getClass().getClassLoader().getResourceAsStream(filePath)));

mvn spring-boot:runにて実行すると普通に参照できる。
しかしながら、jar化して実行すると、resourcesが見つからない…
結構悩んだ…

結局の答えは、ズバリ!
ResourceLoaderでした!

使い方はシンプル

    @Autowired
    private ResourceLoader resourceLoader;

にて、ResourceLoaderを参照させて、

inputStreamReader = new InputStreamReader(
        resource.getInputStream(), StandardCharsets.UTF_8);

って感じですね。

これで、spring-boot:runでも、jar化しても参照可能です。

いいかんじぃー