언어/Java
Properties 예시
sector
2023. 8. 8. 18:36
public class ProductUser {
java.util.Scanner sc = new java.util.Scanner(System.in);
// non-static 변수는 객체가 생성될 때 메모리에 할당된다
// 그래서 ProductUser user = new ProductUser(); 해줬음
// ProductDAOArray dao = new ProductDAOArray();
// ProductDAOInterface dao = new ProductDAOArray(); // 업캐스팅해서 쓰자
// ProductDAOInterface dao = new ProductDAOList();
ProductDAOInterface dao; // 의존성주입, getResourceAsStream를 통해 결정
ProductUser(){
// dao = new ProductDAOList();
// user가 직접 결정하지 않고 프로퍼티스를 통해 클래스 생성해서 쓰기
Properties env = new Properties();
try {
env.load(ProductUser.class.getResourceAsStream("my.properties"));
// ProductDAOArray dao = new ProductDAOArray(); 이렇게 객체 지정해야하는걸,
// 어떤 객체를 만들지 결정권은 my.properties에게 넘김
String className = env.getProperty("product.dao");
Class clazz = Class.forName(className);
// clazz.newInstance();
Object obj = clazz.getDeclaredConstructor().newInstance();
// 매개변수 없는 생성자 이용해서 ProductDAOFile()가 실행될 것.
dao = (ProductDAOInterface)obj;
System.out.println("DAO에서 실제사용된 클래스:" + dao.getClass().getName());
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
※ Properties 만드는 법