1. 변경에 유리한 코드(1)  :  다형성, factory method


   변경에 유리한 코드(2)  :  Map과 외부파일

 

※ 항시체크: ①변하는것과 변하지않는것 분리, ②관심사분리, ③중복코드분리(AOP)

 


2. 객체 컨테이너 만들기

하드코딩 → txt파일 읽어 객체를 map에 저장

 


3. 자동 객체 등록하기 - Comonent Scanning  ( guava라이브러리이용 )

 

guava라이브러리 사용준비 완료


 


4. 객체찾기 - by Name, by Type

AppContext ac = new AppContext();
Car car = (Car) ac.getBean("car")         //  이름으로 찾는방법 : by Name  ( key를 찾는것 ) 
Car car = (Car) ac.getBean(car.class)   //  타입으로 찬는방법 : by Type   ( value의 객체를 찾는 것 )
  이름으로찾기 타입으로찾기
  Object getBean(String id) {
      return map.get(id)
}
OBject getBean(Class clazz) {
      for(Object obj : map.values()) {
            if(clazz.isInstance(obj))     // obj instanceof clazz
                  return obj;
      }
      return null;
}

 


5. 객체를 자동 연결하기(1) - @Autowired    (by Type 으로 value검색 )

 


6.객체를 자동 연결하기(2) - @Resource (by Name 으로 key검색 )

ex) Engine engine → engine engine  으로 (타입 첫 글자는 소문자로)검색

 


참고 :

남궁성, 스프링의 정석

+ Recent posts