@Autowired || @Qualifier || @Resource
❗️xml설정예시 - 같은 클래스의 객체 bean을 두개 생성(MemberDao)
<context:annotation-config/><!-- 어노테이션 설정을 읽어들여라 -->
<bean id ="memberDao1" class="spring.MemberDao"></bean>
<bean id ="memberDao2" class="spring.MemberDao">
<qualifier value ="secondDao"/>
</bean>
<bean id="memberRegSvc" class="spring.MemberRegisterService"></bean>
<bean id="changePwdSvc" class="spring.ChangePasswordService"></bean>
<bean id ="memberPrinter" class="spring.MemberPrinter"></bean>
<bean id ="memberListPrinter" class="spring.MemberListPrinter"></bean>
<bean id = "memberInfoPrinter" class="spring.MemberInfoPrinter"></bean>
<bean id = "versionPrinter" class="spring.VersionPrinter"></bean>
<context:annotation-config> 태그는 다음의 클래스를 Bean으로 등록해준다.
@Qualifier는 자동의존주입 시 사용할 객체를 선택해준다.
스프링설정파일에 태그로 이름지정
@Autowired("name")을 선택해 주입
@Autowired/ @Qualifier 예시 - FEILD위에 선언
@Autowired //자동주입
@Qualifier("memberDao1") //어떤 bean인지 식별
private MemberDao memberDao; //Feild
☝🏻 Tip++;
이렇게 어노테이션에 커서 갖다 대면 어디에 어노테이션 붙일 수 있는지 나오니까 참고하도록!
@Resource //setter에 자동주입
public void setMemberPrinter(MemberPrinter memberPrinter) {
System.out.println("setMemberPrinter(memberPrinter)");
this.memberPrinter = memberPrinter;
}
☝🏻Tip++;
Contstructor(생성자)에 사용 불가
base-package에 지정된 패키지 및 하위 모든 패키지에서
@Component가 붙은 클래스에 대해 빈을 생성
@Component를 상속한 @Service, @Controller, @Repository 등을 사용(Spring MVC)
클래스위에 @Component만 붙여주면 자동으로 빈을 생성해준다.
xml설정 예시(간단)
<context:annotation-config/>
<context:component-scan base-package="spring3"/>
@Component 사용예시
@Component //클래스위에 어노테이션
public class MemberRegisterService {
private MemberDao memberDao;
@Autowired //의존자동주입
public MemberRegisterService(MemberDao memberDao) {
this.memberDao = memberDao;
System.out.println("MemberRegisterService(MemberDao)");
}
📌 빈 생성하는 코드 일일이 칠 필요없이
1. component-scan 태그 써주고
2. bean필요한 객체에 @Component붙이고
3. @Autowired 등 의존주입해주면 끝!