@Autowired
- 자동주입
- @Autowired 전제조건: 빈컨테이너에 생성되어 있는 객체만 가능
- 기본적으로 타입을 기준으로 주입
- Autowired는 필드마다 하나하나씩 위에 작성해줘야함
- ex)
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
- 하위 어노테이션 모두 같은 의미임
'Spring' 카테고리의 다른 글
[ Spring ] 트랜잭션 Transaction (0) | 2024.08.02 |
---|---|
[ Spring ] MyBatis (0) | 2024.08.02 |
[ Spring ] DI, IOC, AOP (0) | 2024.08.02 |
[ Spring ] 스프링 기초, 의존성 주입 (0) | 2024.07.31 |