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 으로 (타입 첫 글자는 소문자로)검색
참고 :
남궁성, 스프링의 정석
'Spring의 정석' 카테고리의 다른 글
Spring_DI와 AOP(DI 활용하기 이론)_5~8 (0) | 2023.03.20 |
---|---|
Spring_DI와 AOP(DI 활용하기 실습)_4 (0) | 2023.03.19 |
SpringMVC 10 (DispatcherServlet, 데이터의 변환과검증) (0) | 2023.03.15 |
SpringMVC 9 ( 예외처리 ) (0) | 2023.03.14 |
SpringMVC 8 ( 쿠키, 세션 ) (0) | 2023.03.12 |