实现 implements CommandLineRunner接口可以在项目启动的时候触发走run里面的逻辑,
InputStream stream = getClass().getClassLoader().getResourceAsStream(“json/item/ItemDynamicFormSkuNode2.json”);
可以读取项目resources目录下的json/item/ItemDynamicFormSkuNode2.json文件
import org.springframework.boot.CommandLineRunner;import org.springframework.stereotype.Component;import java.io.*;@Componentpublic class TestCommandLineRunner implements CommandLineRunner {@Overridepublic void run(String... args) throws Exception {InputStream stream = getClass().getClassLoader().getResourceAsStream("json/item/ItemDynamicFormSkuNode2.json");//这里可以加载配置文件String s = inputStreamToString(stream);System.out.println("TestCommandLineRunner.run");System.err.println("这里可以加载配置文件");}private String inputStreamToString(InputStream inputStream) {StringBuffer buffer = new StringBuffer();InputStreamReader inputStreamReader;try {inputStreamReader = new InputStreamReader(inputStream, "utf-8");BufferedReader bufferedReader = new BufferedReader(inputStreamReader);String str = null;while ((str = bufferedReader.readLine()) != null) {buffer.append(str);}// 释放资源bufferedReader.close();inputStreamReader.close();inputStream.close();} catch (UnsupportedEncodingException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return buffer.toString();}}
注意点
这里需要注意一个点,就是我本人是dubbo项目,有一次忽然发现dubbo服务已经可以使用的时候,但是 implements CommandLineRunner方法的类的run方法,还没被执行到,这就有可能出现业务逻辑错误
我当时解决办法就是在业务代码获取这个属性的时候先判断是否是null,如果是null的话就立即去读取配置文件加载数据,如果不是null的话,就回去这个值的数据.
