Spring is About Choice

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

틀린 내용

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에서 포인트컷 표현식의 조화

Spring 2.5 MVC 요약

토비님 발표를 들으며 요약한 내용입니다. 많은 걸 적을 순 없었습니다. 어차피 PPT가 KSUG 사이트에 올라올테니 그걸 기다려봅니다.

@Controller

@RequestMapping
    method level에서 narrowing.
        value, method, params
    파라미터와 리턴타입의 자동인식

    리턴값
    파라미터

@RequestParam
    이름이 다를 경우에만 사용
    URL 파라미터 받아오기

@ModelAttribute : 커맨드 객체, 레퍼런스 데이터

@SessionAttribute : 세션폼
    SessionStatus.setComplete();

@InitBinder : 커스텀 프로퍼티 에디터
    WebDataBinder

POJO 컨트롤러 테스트 가능
FlowContext를 이용한 flow control 가능
@PathElement REST 스타일… good! 빨리 나와주길 바래.

실습해볼 것
Spring MVC 예제 만들기(실습 과정을 동영상으로 찍어볼까~ 흠..)
    1. 컨트롤러 하나로 MultiAction + SimpleForm 역할하기
    2. 프로퍼티 에디터 사용하기
    3. 파라미터에서 값 가져오기
    4. 세션 객체 사용하기

이전에 공부했던 내용
2007/11/28 – [Spring/Chapter 13] – Annotation-based controller configuration