7월, 2011의 게시물 표시

Spring 3.x Annotation Configuration

Annotation 기반 설정

@Required
스프링 2부터 제공되고 있으며 필수 프로퍼티를 명시할 때 사용된다. @Require 어노테이션을 추가했다고 해서 필수 프로퍼티로 인식하지 않는다. 스프링 설정 파일에 “RequriedAnnotationBeanPostProcessor” 클래스를 빈으로 등록해야 한다. 또는 <context:annotation-config />

@Autowired
의존 관계를 자동으로 설정할 때 사용된다. 생성자, 필드, 메서드에서 사용가능.
@Autowired 어노테이션을 사용하려면 “AutowiredAnnotationBeanPostProcessor” 클래스를 빈 객체로 등록해줘야 한다. 또는 <context:annotation-config/>
자동으로 프로퍼티 값을 설정할때 해당 타입의 빈 객체가 존재하지 않거나 또는 빈 객체가 두 개 이상 존재할 경우 예외를 발생시킨다. @Autowired(required=false) 빈객체가 존재하지 않더라도 예외를 발생하지 않는다.

@Resource
어플리케이션에서 필요로 하는 자원을 자동 연결할 때 사용된다. 스프링에서는 의존하는 빈 객체를 전달 할 때 사용한다. name속성에 자동으로 연결할 빈 객체의 이름을 입력합니다.
“CommonAnnotationBeanPostProcessor” 클래스를 등록해야 하며 <context:annotation-config />를 사용하기도 합니다.

@PostConstruct, @PreDestory
init-method, destroy-method와 같은 기능, “CommonAnnotationBeanPostProcessor” 클래스를 등록해야 하며 <context:annotation-config />를 사용하기도 합니다.

Spring 3.x 메시지 및 이벤트 처리

MessageSource이용한메시지국제화

MessageSource 인터페이스는지역및언어에따라알맞은메시지를구할수있는메서드를정의하고있다. ApplicationContext는 MessageSource 인터페이스를상속받고있어지역및언어에알맞는메시지를가져올수

Spring 3.x 객체 관리

Dependency Injection(DI)
객체 간의 의존 관계를 객체 자신이 아닌 외부의 조립기가 수행해 준다는 개념
실제로 의존하는 객체를 지정하는 가장 간단한 방법은 코드에 직접 명시하는 것, 그러나 단위 테스트를 어렵게 만드는 단점이 있다.- mock 객체를 활용하려면 코드를 직접 수정해야 한다. 또 다른 단점으로는 의존하는 클래스가 변경되는 경우 코드를 변경해야 하는 문제가 있다.
다른 방법으로는 Factory나 JNDI를 사용해서 의존 클래스를 검색하는 방법이다. 이 방법은 외부의 설정 파일을 사용할 수 있고, 시스템 프로퍼티를 사용할 수도 있다.
마지막 방법은 외부의 조립기를 사용하는 것, 의존 관계에 있는 객체가 아닌 외부의 조립기가 각 객체 사이의 의존 관계를 설정해 준다. 이와 같이 외부의 조립기가 의존 관계를 관리해 주는 방식을 Dependency Injection이라고 한다.
의존하는 객체를 조립기가 삽입(iinject)해 주기  때문에 이 방식을 DI 패턴이라 부른다. 비슷한 의미로 IoC(Inversion of Control)이라고도 표현한다.

AOP
여러 부분에 걸쳐서 공통으로 사용되는 기능이 필요한 경우, 예를 들어 로깅이나, 트랜책션 처리, 보안과 같은 기능.
핵심 로직을 구현한 클래스를 실행하기 전, 후에 Aspect를 적용하고, 그 결과로 핵심 로직을 수행하면 그에 앞서 공통 모듈을 실행하거나 또는 로직 수행 이후에 공통 모듈을 수행하는 방식으로 공통 기능을 실행하게 된다.
Aspect가 핵심 로직 구현 클래스에 의존하지 않는다는 점이 중요한 점이다.

Spring Container
객체를 담아두고, 필요할 때에 컨테이너로부터 객체를 가져와 사용
“org.springframework.beans.factory.BeanFactory” Interface는 빈 객체를 관리하고 각 빈 객체간의 의존 관계를 설정해 주는 기능을 제공하는 가장 단순한 컨테이너.

Resource Implement ClassFilesystemResourceInputStreamRe…