public class MemberServiceimpl implements MemberService {
@Autowired //자동 주입(빈에 등록된 객체만 가능)
private MemberDAO dao;
//chapter2처럼 setter를 통해 IoC로 의존성을 주입했는데,
//Autowired를 통해 자동으로 해준다.
// public void setMemberDAO(MemberDAO dao) {
// this.dao = dao;
// } <- 얘가 필요 없어짐
}
@Configuration
public class BeanConfig {
@Bean
public MemberDAO memberDAO() {
return new MemberDAOimpl();
@Bean
public MemberService memberService() {
MemberServiceimpl m = new MemberServiceimpl();
// m.setMemberDAO(memberDAO()); 얘가 필요 없이짐.
return m;
}
}
@Quailifier("빈이름 어노테이션")
서로 다른 이름으로 같은 타입으로부터 빈을 생성하고 싶을때 사용
잘 사용하지는 않음(왜냐면 Spring은 싱글톤을 지향하기 때문)
ex)
@Configuration
public class BeanConfig {
@Bean
public MemberDAO memberDAO1() {
return new MemberDAOimpl();
}
@Bean
public MemberDAO memberDAO2() {
return new MemberDAOimpl();
}
}
public class MemberServiceimpl implements MemberService {
@Autowired //자동 주입(빈에 등록된 객체만 가능)
@Qualifier("memberDAO1")
private MemberDAO dao;
}//memberDAO1으로 지정
@ComponentScan(basePackages=”chapter04”)
자동 빈 생성
@Configuration
@ComponentScan(basePackages = "chapter04")
//chapter04 밑에 있는 모든 @Component가 달린 파일들을 스캔해서 모든 빈들을 등록한다.
public class BeanConfig {
}
// 그래서 BeanConfig에 따로 빈을 등록하지 않아도
// 자동으로 빈이 등록되었다.
@Component
하위 어노테이션: @Controller , @Service, @Repository , @Configuration