본문 바로가기

언어/Java

Properties 예시

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 만드는 법

작성해서 사용하면 됨

 

'언어 > Java' 카테고리의 다른 글

API 도큐먼트  (0) 2023.08.08
LIFO와 FIFO  (0) 2023.08.08
ArrayList, HashSet, HashMap 예시  (0) 2023.08.08
Product 예제 3  (1) 2023.08.04
Product 예제 2  (0) 2023.08.04