Spring
빈 와이어링 - 자동 와이어링
빈 와이어링(Bean wiring)애플리케이션 객체 간의 연관관계 형성 작업 설정 옵션- XML에서의 명시적 설정- 자바에서의 명시적 설정- 내재되어 있는 빈을 찾아 자동으로 와이어링하기 명시적인 설정은 적을수록 좋다. 명시적인 빈 설정을 해야 할 때는, 타입 세이프를 보장하고 더욱 강력한 JavaConfig를 XML보다 선호한다.사용하고자 하는 XML 네임스페이스의 기능이 JavaConfig 에 없을 경우 XML을 사용한다. 자동 와이어링컴포넌트 스캐닝애플리케이션 컨텍스트에서 생성되는 빈을 자동으로 발견한다.XML 설정을 통해서 컴포넌트 스캐닝을 활성화하려면 스프링의 컨텍스트 네임스페이스로부터 요소를 사용한다. 123456789101112 Colored by Color Scriptercs 오토와이어링스..
스프링 컨테이너
스프링 컨테이너스프링 기반 애플리케이션에서는 스프링 컨테이너 안에서 객체가 태어나고, 자라고, 소멸한다. • 객체를 생성하고, 서로 엮어주고, 이들의 전체 생명주기를 관리한다.• DI를 이용해서 애플리케이션을 구성하는 컴포넌트를 관리하며, 협력 컴포넌트 간 연관관계의 형성도 여기에서 이뤄진다. 종류1. 빈 팩토리 (org.springframework.beans.factory.BeanFactory)DI에 대한 기본적인 지원을 제공하는 가장 단순한 컨테이너2. 애플리케이션 컨텍스트 (org.springframework.context.ApplicationContext)빈 팩토리를 확장해 프로퍼티(property) 파일에 텍스트 메시지를 읽고 해당 이벤트 리스너에 대한 애플리케이션 이벤트 발행 같은 애플리케이션..
종속객체 주입 (DI, Dependency Injection)
종속객체 주입 (DI, Dependency Injection)아래와 같은 코드가 있다고 가정해보자. 1234567891011121314public class DamselRescuingKnight implements Knight{ private RescueDamselQuest quest; public DamselRescuingKnight () { this.quest = new RescueDamselQuest (); } public void embarkOnQuest () { quest.embark(); }}Colored by Color Scriptercs 이 코드에서는 DamselRescuingKnight 클래스를 생성했을 때 RescueDamselQuest 객체를 생성한다.이 경우에는 새로운 RescueD..
@MVC : RequestMapping
@RequestMapping@MVC의 핸들러 매핑은 DefaultAnnotationHandlerMapping을 이용하는데, 이것의 핵심은 매핑 정보로 @RequestMapping 어노테이션을 활용한다는 점이다. DefaultAnnotationHandlerMapping은 디폴트이기 때문에 다른 핸들러 매핑 bean을 명시적으로 등록하지 않았다면 기본적으로 사용할 수 있다. 다만, 다른 핸들러 매핑 빈 등록시 빈으로 등록해줘야한다. 아래 어노테이션을 예시로 하나씩 살펴보자.@RequestMapping(value="/main", method=RequestMethod.GET, params="type=user", headers="content-type=text/html")디폴트 엘리먼트인 value는 String..
의존관계 주입(DI, Dependency Injection)
의존관계 주입(DI, Dependency Injection) 오브젝트 레퍼런스를 외부로부터 주입받고 이를 통해 여타 오브젝트와 다이나믹하게 의존관계가 만들어지는 것.구체적인 의존 오브젝트와 그것을 사용할 주체, 클라이언트라고 부르는 오브젝트를 런타임시에 연결해주는 작업이다. 조건1. 클래스 모델이나 코드에는 런타임 시점의 의존관계가 드러나지 않아야한다.: 이를 위해서는 인터페이스에만 의존을 해야한다.2. 런타임 시점의 의존관계는 컨테이너나 팩토리같은 제3의 존재가 결정한다.3. 의존관계는 사용할 오브젝트에 대한 레퍼런스를 외부에서 제공(주입)해줌으로써 만들어진다. 효과1. 런타임 시에만 의존관계가 주입되기 때문에 관계가 느슨해지면서 변화에 영향을 덜 받는다. => 결합도가 낮아진다. 핵심1. 오브젝트는 ..