728x90

프로그래머의 삶 Programmer's Life 179

Bean 이름과 자신의 컨테이너 인식을 위해~(스케쥴링의 용도)

1 .스프링 컨테이너는 BeanNameAware인터페이스를 통해 그 빈의 이름을 알려줄수 있다. package org.psringframework.scheduling.quartz; public class CronTriggerBean extends CronTrigger implements ...,..,BeanNameAware,...{ private String beanName; public void setBeanName(String beanName){ this.beanName=beanName; } ... public void afterPropertiesSet()...{ if(getName() == null ){ setBeanName(this.beanName); } ... } } - 빈이 로딩되면 컨테이너는..

Spring Context Event

ApplicationContext는 이벤트를 발생시킬수 있는 publishEvent()메소드 제공 void publishEvent(ApplicationEvent) public abstract class ApplicationEvent extends EventObject{ ... public ApplicationEvent(Object source){ super(source); this.timestamp=System.currentTimeMillis(); } public final long .... 위 소스와 같이 생성자를 통해서 이벤트를 발생시킨 객체를 전달받는다. ApplicationContext 를 통해 이벤트 발생시키고픈 빈은 ApplicationContextAware인터페이스를 구현한뒤 Applicat..

자동묶기

자동으로 묶고자 하는 에 autowire특성을 설정 함으로서 빈을 자동으로 묶을 수 있게 한다. 자동묶기(autowire)의 타입 1. byName - 특성의 이름과 동일한 이름이나 ID 를 가진 빈을 컨테이너에서 찾는다. 2. byType - 특성의 타입과 동일한 타입을 가진 빈을 컨테이너에서 찾는다. (하나이상의 빈 발견시 UnsatisfiedDependencyException 3. constructor - 빈의 생성자 중 하나의 파라미터와 맞는 하나 이상의 빈을 컨테이너에서 찾는다. 4. autodetect - 생성자에의한 자동묶기 시도후 byType 자동묶기시도. - 자동묶기는 default로 byName - 자동묶기시 byName 의 경우 리팩토링할경우 xml파일 수정하지 않는이상 빈을 찾지 못..

묶기

묶기(wiring) - 스프링 컨테이너 안에서 빈들을 짜맞추는것 묶기 조건 - 1. 어떤빈들이 사용될지 2. 묶기 위해 어떻게 의존성 주입을 사용할지 위의 두가지 조건을 컨테이너에게 알려줘야 한다. 생성자 주입 입장 1. 생성자 주입은 강한 의존성 계약을 강제한다. 일단 인스턴스화되면 빈은 완벽하게 유효하며 즉시 사용가능한 상태가 된다. 2 . 의존성이 생성자를 통한 설정이므로 불필요한 세터 메소드를 가질 필요가 없다. (코드의 최소화) 3. 생성자를 통해서만 특성을 설정. (변경되지 않는 특성 immutable property 이 되는 효과 세터 주입 이장 1. 빈이 여러개의 의존성을 갖는 경우 생성자 파라미터목록이 길어진다. 2. 특정한 생성자 식별이 어렵다. 3. 생성자가 동일 타입 두개 이상의 파..

Spinrg 의 생명주기

1. 컨테이너는 빈의 정의를 알아낸 다음 빈을 인스턴스화 한다. 2. 의존성 주입을 이용해 빈의 정의에 지정된 모든특성에 값을채운다. 3. 빈이 BeanNameAware 인터페이스를 구현한다면 팩토리는 빈의 ID를 setBeanName()에 전달하여 호출한다. (콜백은 일반적인 빈 프로퍼티의 활성화 이후지만 InitializingBean의 afterPropertiesSet이나 사용자지정 init-method같은 콜백을 초기화하기전에 호출될 것이다.) InitializingBean 의 afterPropertiesSet()는 빈의 모든 특성이 설정된 후에 한번에 호출. DisposableBean 의 destroy()는 빈이 컨테이너로부터 제거될때 호출 4. 빈이 BeanFactoryAware 인터페이스를 구..

applicationContext by 쥔장

BeanFactory 와 표면적으로 상당히 유사하다. 빈 로딩, 빈묶기 , 요청에 따른 빈 분배 를 한다. 하지만 applicationContext는 아래와 같은 기능이 더 있다. 1. 국제화(I18N)지원을 포함해 텍스트 메시지를 해석하는 수단제공 2. 이미지 등과같은 자원로딩하는 범용적 방법제공 3. Listener 로 등록되어있는 빈에 이벤트 발생할수 있다. 이동통신기기와 같이 자원이 부족할때 빼곤 위와같은 이유로 BeanFactory보다는 applicationContext를 더 많이 사용한다. ApplicationContext 구현 클래스중 대표적인 클래스 1. ClassPathXmlApplicationContext - xml파일로부터 컨텍스트정의 로딩 , (클래스 경로)에 있는 자원을 취급 2...

BeanFactory 설명~ by 쥔장

빈 팩토리...이름 그 자체로 팩토리 디자인 패턴을 구현한 것이다. 빈 팩토리는 빈을 생성하고 분배하는 책임을 지는 클래스로서 단일 유형의 객체만 분배하는것과 달리 범용적 목적의 팩토리로서 다양한 유형의 빈을 생성하고 분배가능하다. 빈팩토리는 Application 내의 많은 객체에 대해 알기때문에 객체들의 인스턴스화할때 협업하는 객체 간의 연관관계를 생성시키는 것이 가능하다 (빈 자신과 빈의 클라이언트로부터 설정이라는 작업을 없애준다.) 즉, 빈팩토리가 객체를 배분하는 시점에서 객체들이 완전히 설정되 있는 상태이며 협업하는 객체들끼리 인식 하고 곧바로 사용할수 있는 상태인 것이다. 게다가 빈팩토리는 커스텀 초기화메소드(initialization method) 와 소멸메소드(destruction metho..

728x90