Spring 학습 (7): 자바 코드 로 bean 조립

6397 단어 Spring
1. 머리말
비록 많은 장면 에서 구성 요소 스 캔 과 자동 조립 을 통 해 Spring 의 자동화 설정 을 실현 하 는 것 이 더욱 추천 하 는 방식 이지 만 때로는 자동화 설정 방안 이 통 하지 않 기 때문에 Spring 을 명확 하 게 설정 해 야 한다.예 를 들 어 제3자 라 이브 러 리 의 구성 요 소 를 응용 프로그램 에 설치 하려 면 이 경우 클래스 에 @ Component 와 @ Autowired 주 해 를 추가 할 방법 이 없 기 때문에 자동화 조립 방안 을 사용 할 수 없습니다.
이런 상황 에서 너 는 반드시 명시 적 조립 방식 을 채택 해 야 한다.명시 적 설정 을 할 때 자바 와 XML 두 가지 옵션 이 있 습 니 다.이 절 에서 자바 설정 을 어떻게 사용 하 는 지 배 울 것 입 니 다. 다음 절 에 서 는 Spring 의 XML 설정 을 계속 배 울 것 입 니 다.
자바 config 는 다른 자바 코드 와 차이 가 있 습 니 다. 개념 적 으로 응용 프로그램의 업무 논리 와 영역 코드 와 다 릅 니 다.다른 구성 요소 와 마찬가지 로 같은 언어 로 표현 되 지만 자바 Config 는 설정 코드 입 니 다.이것 은 어떠한 업무 논리 도 포함 하지 말 아야 하 며, 자바 config 도 업무 논리 코드 에 침입 해 서 는 안 된다 는 것 을 의미한다.꼭 필요 한 것 은 아니 지만 자바 Config 를 단독 가방 에 넣 어 다른 응용 프로그램의 논리 와 분리 시 키 면 그 의도 에 대해 곤 혹 스 럽 지 않 습 니 다.
2. 사례 설명
2.1 CD 인터페이스
package blog.p2;

public interface CD {
    void play();
}

2.2 JayCD CD 구현 CD 인터페이스
package blog.p2;

import org.springframework.stereotype.Component;

public class JayCD implements CD {

    private String title = "  ";
    private String artist = "Jay";

    public void play() {
        System.out.println("palying " + title + " by " + artist);
    }

}

2.3 CDPlayer
package blog.p2;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

public class CDPlayer {

    private CD cd;

    public CDPlayer() {
    }

    public CDPlayer(CD cd) {
        this.cd = cd;
    }

    public void play(){
        cd.play();
    }

    public void setCd(CD cd) {
        this.cd = cd;
    }
}

2.4 설정 클래스
package blog.p2;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class Config {

    @Bean
    public CD jayCd(){
        return new JayCD();
    }

    @Bean
    public CDPlayer cdPlayer(){
        return new CDPlayer(jayCd());
    }

}

위의 코드 에서 @ Bean 주 해 는 Spring 이라는 방법 이 대상 을 되 돌려 줍 니 다. 이 대상 은 Spring 응용 컨 텍스트 의 bean 으로 등록 해 야 합 니 다.방법 체 에는 최종 적 으로 bean 인 스 턴 스 를 만 드 는 논리 가 포함 되 어 있다.
기본적으로 bean 의 ID 는 @ Bean 주석 이 있 는 방법 명 과 같 습 니 다.이 예 에서 bean 의 이름 은 jayCd 가 될 것 입 니 다.다른 이름 으로 설정 하고 싶다 면 이름 을 바 꿀 수도 있 고 name 속성 을 통 해 다른 이름 을 지정 할 수도 있 습 니 다.
그렇다면 어떻게 주입 을 실현 합 니까?이 곳 에 서 는 기본 구조 기 를 사용 하여 인 스 턴 스 를 구축 하지 않 고 CD 대상 에 들 어 갈 구조 기 를 호출 하여 CDPlayer 인 스 턴 스 를 만 들 었 습 니 다.보아하니 CD 는 jayCd () 호출 을 통 해 얻 은 것 같 지만 상황 이 완전히 그렇지 는 않다.sgtPeppers () 방법 에 @ Bean 주 해 를 추 가 했 기 때문에 Spring 은 모든 호출 을 차단 하고 이 방법 이 만 든 bean 으로 직접 돌아 가 는 것 을 확보 합 니 다. 매번 실제 호출 하 는 것 이 아 닙 니 다.여러 방법 으로 jayCd () 방법 을 호출 하면 같은 인 스 턴 스 를 얻 을 수 있 습 니 다.
물론 구조 기 를 주입 하지 않 고 사용 방법 으로 주입 할 수도 있다.
@Bean
public CDPlayer cdPlayer2(){
    CDPlayer cdPlayer = new CDPlayer();
    cdPlayer.setCd(jayCd());
    return cdPlayer;
}

2.5 테스트 클래스
package blog.p2;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = Config.class)
public class App {

    @Autowired
    CDPlayer cdPlayer;

    @Test
    public void test(){
        cdPlayer.play();
    }
}

마지막 출력:
palying    by Jay

이로써 우 리 는 자바 설정 Spring 의 사례 를 통 해 완성 되 었 다.

좋은 웹페이지 즐겨찾기