🌱 SPRING
조건부 빈
조건부 빈스프링 4.0부터 @Conditional 어노테이션으로 조건이 참일 때만 빈이 생성시킬 수 있다. 123456@Bean@Conditional(MagicExistCondition.class)public MagicBean magicBean () { return new MagicBean();}Colored by Color Scriptercs 위 소스에서는 환경 프로퍼티 중 MagicExistCondition.class 가 true를 반환 할 때 MagicBean이 생성된다. 1234public interface Condition{ boolean matches (ConditionContext ctxt, AnnotatedTypeMetadata metadata);}Colored by Color Script..
XML로 빈 와이어링하기
XML로 빈 와이어링하기1. XML 설정 스펙 만들기JavaConfig 에서 @Configuration 어노테이트된 클래스를 만들듯이 루트 XML 파일을 만든다. 12345678 Colored by Color Scriptercs 2. 간단한 빈 선언 요소를 사용해 빈을 선언한다. JavaConfig 의 @Bean과 유사하다고 보면된다. 1cs ID 값을 별도로 설정하지 않았기 때문에 이 빈의 ID는 com.test.logicalCode.soundSystem.SgtPeppers#0 이다.하지만 사용자를 위해 자동으로 빈 ID가 명명되어도 자동으로 만들어지는 이름은 유용성이 떨어지므로 ID를 부여하도록한다. 1cs 3. 생성자 주입을 사용하여 빈 초기화하기XML로 DI를 선언할 때, 여러 옵션이 있는데, 특..
자바로 빈 와이어링하기
자바로 빈 와이어링하기대부분 컴포넌트 스캐닝과 오토 와이어링을 사용한 자동 스프링 설정을 선호하지만, 이때 자동 설정은 옵션이 아니며 스프링을 명시적으로 설정해야한다. 예를 들면, 타사 라이브러리의 컴포넌트를 애플리케이션으로 와이어링 하고자 했을 때, 그 라이브러리의 소스 코드를 가지고 있지 않으므로 클래스를 @Component와 @Autowired를 사용하서 어노테이트 할 수 없다. 따라서 자동 설정은 선택지가 아니다. JavaConfigJavaConfig는 매우 강력하고, Type-safe하며, 리팩토링이 친화적이므로 명시적인 설정을 위해 선호하는 옵션이다.JavaConfig는 컴포넌트와 동일한 언어로 작성되었지만, 설정용 코드이며 다른 자바 코드와 완전히 동일하지 않다.어떠한 비즈니스 로직도 포함하..
빈 와이어링 - 자동 와이어링
빈 와이어링(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..