Spring | Bean 등록과 DI

호떡·2022년 10월 13일
0

흐름 (Maven 프로젝트에서 DI 실습)
1. 메이븐을 통해서 우리 프로젝트에 Spring 라이브러리 세팅 (pom.xml)
2. 스프링 설정파일 만들고 객체(bean) 등록하기 (applicationContext.xml)
3. 스프링 컨테이너 객체 빌드 및 사용 (ApplicationContext context)


설정자 주입

	<bean class="com.ssafy.ws.Audience" id="audience">	// Bean 등록
		<property name="movie" ref="comic"></property>	// 의존성 주입
	</bean>

생성자 주입

	<bean class="com.ssafy.ws.Audience" id="audience">					// Bean 등록
		<constructor-arg name="movie" ref="comic"></constructor-arg>	// 의존성 주입
	</bean>

Annotation

💡 참고: Annotation

설정파일에서 bean등록과 의존관계를 설정하는 것이 아니라, 자바 코드의 annotation을 읽음으로써 설정 처리
component-scan : 지정된 패키지의 자바 클래스들을 모두 검사하면서 붙은 annotation에 따라 처리하겠다.
즉, 설정 정보들은 해당 파일에 하는 것이 아니라 자바 파일에 낙인을 찍음으로써 설정하겠다
즉, 지정된 패키지에서 낙인이 찍힌 클래스를 모두 bean으로 등록한다.

  1. @Component
    Bean으로 등록
    클래스 첫글자를 소문자로 바꾼 이름이 Bean의 이름이 된다.

  2. @Autowired
    의존성 주입
    자동으로 타입이 일치하는 Bean을 찾아다가 주입해준다.

  3. @Component("movie")
    Bean으로 등록
    그냥 @Component이면 클래스명 첫글자 소문자이지만, 이름을 정해주면 정해준 이름으로 빈이 등록된다. 따라서 @Autowired에 의해 일치하는 타입의 Bean이 여러 개일 경우 이름을 지정해준다. 따라서 setter 함수는 'set'을 뺀 나머지 자신의 이름과 동일한 이름을 가진 Bean을 찾아가 의존성을 주입 받는다.

  4. @Qualifier("Bean객체 이름")
    일치하는 타입의 Bean이 여러 개일 경우 @Qualifier 어노테이션을 활용하여 의존성 주입을 받을 Bean 객체의 이름을 명시적으로 지정할 수 있다.

0개의 댓글