Spring 학습 (7): 자바 코드 로 bean 조립
6397 단어 Spring
비록 많은 장면 에서 구성 요소 스 캔 과 자동 조립 을 통 해 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 의 사례 를 통 해 완성 되 었 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.