Whiteship's Note


[KSUG] 스프링 AOP 선택, 활용, 이슈 - 스크린캐스팅

Spring/KSUG : 2008.11.11 08:56




위 링크에서 동영상 링크를 사용하여 mov 파일을 다운 받으시거나, 퀵 타임 플레이어가 설치되어 있다면, 웹에서 바로 보실 수도 있습니다.

발표를 하고 2주 정도 지난 다음 녹화를 한 건데, 스크린캐스팅을 좀 짧게 찍고 싶어서 총 다섯 개로 나눠서 한 편당 10~15 내외로 찍었습니다. KSUG 블로그를 통해서 한 주에 한 편식 올리겠습니다. 쉬는 시간 짬짬히 구경해 주세요. :)

이번에 올린 동영상은 AOP에 대한 내용인데, AOP 자체에 대해서는 깊게 알지 못하기 때문에, 제가 아는 한도 내에서만 살짝 살펴봤습니다. 따라서 내용이 다소 수박겉할기식으로 느껴질 수도 있는데요. 첫 번째 동영상의 목적은 AOP에 대해 자세히 설명 드리는 것이 아니라 AOP라는 개념을 프로젝트에 도입하면 어떤 도움을 받을 수 있는지 좀 더 현실적인(코드를 통해서) 감을 잡게 해드리는 것이 목적이기 때문에 그다지 AOP 개념이나 역사에 대해 자세히 다루진 않았습니다. 가볍게 보실 수 있겠죠.ㅋ

어느새 점심 시간이네요. 식사 맛나게 하세요.

updated 2008/11/11

이번에는 스프링 AOP에 대한 주제로, 코딩으로 Proxy 만드는 방법, 스프링 API 사용 방법, XML 스키마 사용 방법, @AspectJ 사용 방법, AspectJ 연동 방법까지 살펴봅니다.

next 2008/11/18
top


스프링 AOP 선택, 활용, 이슈 - 발표자료 & 소스코드

Spring/KSUG : 2008.10.14 14:49


원래 계획대로면 스크린캐스팅도 제공해야 하는데, 제가 이번 주에는 여유가 없을 것 같아서 일단 발표자료만 올립니다. KSUG에서 별다른 연락이 없기 때문에 일단 제 블로그에 올리죠. 나중에 KSUG에서 일괄적으로 정리해서 발표 자료 묶음을 올리면 좋겠네요.


방명록에 보니 소스코드 요청도 있어서, 같이 올려둡니다. 메이븐 프로젝트인데, 몇몇 라이브러리는 메이븐 중앙 저장소에서 받지 못할 수도 있습니다. 그럴 때는, OSAF 메이븐 저장소를 원격 저장소로 등록해서 사용하시면 됩니다. OSAF 메이븐 저장소 주소는 다음과 같습니다.

http://www.opensprout.org:8082/nexus/content/groups/public/


top


Spring is About Choice

Spring/KSUG : 2007.12.23 01:03


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

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

top


Spring 2.5 MVC 요약

Spring/KSUG : 2007.12.23 00:30


토비님 발표를 들으며 요약한 내용입니다. 많은 걸 적을 순 없었습니다. 어차피 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

top