Spring is About Choice
이 메모도 역시 토비님 발표를 들으며 요약한 내용입니다. 첫 번째 세션에서 엉뚱한 대답들을 하느라 무안했지만, 기억하는데에는 망신당하는 것이 최고였습니다.
틀린 내용
테스트 하는 Main 메소드가 BeanFactory가 내려가기 전에 끝나서...라고 말하고 싶었는데 뭐라고 말을 한건지도 모르겠네요. -_-;;
ac.close(); 사용하면 볼 수 있음.
2. Autowiring 종류에 default는 없슴. auto-detect.
3. 딴짓(여친과 문자)하느라 질문 내용도 못들음...-_-;;;
정답이 bean이였던걸로 유추하면 2.5에 새로추가된 pointcut 표현식을 물어보셨었나..라고 생각이 됩니다.
요약
컴포넌트 모델 지원
공통의 기반 제공
컴포넌트에 다양한 가치 부여
AOP, 트랜잭션, ...
Spring is About Choice
스프링은 만능 솔루션을 강요하지 않아. 항상 선택할 수 있으며, 책임이 뒤따른다.
애노테이션 설정
IoC/DI : 컨테이너가 객체들 관리해준다.
생성, 설정, 데코레이션, 어샘블, ...
BeanDefinition : <bean>에 의해 만들어지는 정보
Spring 2.5
Field Injection
Multi Param Method
@Resource
자바스팩에서는 JNDI vs 스프링에서는 Bean 이름
property 태그 대체
디포트 이름은 Java Bean 규약에 따른 이름사용.
필드 인젝션 단점은??
고급설정
CommonAnnotationBeanPostProcessor 직접 등록하고 속성 설정.
init/dest 애노테이션 이름 설정 가능
@PostConstruct
void 리턴
파라미터 없애고, 체크드 익셉션 던지면 안돼
@PreDestroy
컨테이너를 명시적으로 닫아줘야 돼.
ac.close();
@Autowired
기본으로 byType
메소드는 아무이름이나 가져도 된다.
AutowiredAnnotationBeanPostProcessor
<context:annotation-config />
Fine Grained 됐다. 프로퍼티 별로.
한 번에 여러개 주입 가능.(구글 쥬스에서 따옴)
그럼 두 개의 타입은 못쓰느냐?
@Qualifier("fileFinder")
<qualifier value || type />
메타 애노테이션
스프링 레퍼런스 참조
required default
primary
custom annotation
component scanning
기본 컴포넌트
@Component
컴포넌트 스캐너 = <context:component-scan base-pachage="" />
include filter(annotation, assignable, aspectj, regex)
메타에노테이션으로 사용가능.
@Repository, @Service, @Controller, ...
AOP 적용할 때 유리해.
value는 꼭 있어야 돼.
XML 수정시 SCM 충돌 괴롭지 아니한가
@Scope
ClassPathBeanDefinitionScanner 쓰면 xml 하나도 안써도 돼.
RAR : 데몬 서비스 패치
JMS
AspectJ LTW가 성능 좋아
트랜잭션에 mode로 LTW 사용가능
실습할 내용
1. @Resource와 @Autowired 언제 어떤걸 사용할까?
2. 트랜잭션 처리할 때 LTW 적용
3. 필드 인젝션 단점은 뭘까?
4. 메타 애노테이션과 Spring AOP에서 포인트컷 표현식의 조화