이 메모도 역시 토비님 발표를 들으며 요약한 내용입니다. 첫 번째 세션에서 엉뚱한 대답들을 하느라 무안했지만, 기억하는데에는 망신당하는 것이 최고였습니다.

틀린 내용

1. DesposableBean, destroy-method, @PreDestroy 의 메소드 실행 여부 확인 안 되는 이유.
    테스트 하는 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에서 포인트컷 표현식의 조화