인텔리제이로 properties파일을 불러오기 위해 FileInputStream을 사용했는데 에러가 났다.
@SpringBootApplication
public class DaoInterfaceApplication {
public static void main(String[] args) throws IOException {
SpringApplication.run(DaoInterfaceApplication.class, args);
FileInputStream fis = new FileInputStream("application.properties");
Properties prop = new Properties();
prop.load(fis);
String dbType = prop.getProperty("DB-TYPE");
UserInfo userInfo = new UserInfo();
UserInfoDao userInfoDao = null;
if(dbType.equals("ORACLE")) {
userInfoDao = new UserinfoOracleDao();
}
else if(dbType.equals("MYSQL")){
userInfoDao = new UserinfoMysqlDao();
}else{
System.out.println("db error");
return;
}
userInfoDao.insertUserInfo(userInfo);
userInfoDao.updateUserInfo(userInfo);
userInfoDao.deleteUserInfo(userInfo);
}
}
Exception in thread "main" java.io.FileNotFoundException: application.properties (No such file or directory)
at java.base/java.io.FileInputStream.open0(Native Method)
at java.base/java.io.FileInputStream.open(FileInputStream.java:219)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:112)
at com.example.daointerface.DaoInterfaceApplication.main(DaoInterfaceApplication.java:21)
스택오버 플로우
https://stackoverflow.com/questions/44399422/read-file-from-resources-folder-in-spring-boot
나의 경우 FileInputStream에 직접적으로 경로를 넣었는데 스택오버 플로우의 코드를 보니 ResourceUtils.getFile을 통해 경로를 가져온것을 확인할 수 있었다. 파일 위치에 "classpath:"를 추가했고 Try-catch 문으로 IOException e 를 붙였더니 제대로 실행 되었다.
@SpringBootApplication
public class DaoInterfaceApplication {
public static void main(String[] args) throws IOException {
SpringApplication.run(DaoInterfaceApplication.class, args);
Properties properties = new Properties();
try {
File file = ResourceUtils.getFile("classpath:application.properties");
InputStream in = new FileInputStream(file);
properties.load(in);
String dbType = properties.getProperty("DB-TYPE");
UserInfo userInfo = new UserInfo();
UserInfoDao userInfoDao = null;
if(dbType.equals("ORACLE")) {
userInfoDao = new UserinfoOracleDao();
}
else if(dbType.equals("MYSQL")){
userInfoDao = new UserinfoMysqlDao();
}else{
System.out.println("db error");
return;
}
userInfoDao.insertUserInfo(userInfo);
userInfoDao.updateUserInfo(userInfo);
userInfoDao.deleteUserInfo(userInfo);
System.out.println(dbType);
} catch (IOException e) {
}
return;
}
}