Spring
[ Spring ] 어노테이션 모음
hanjuCoding
2024. 8. 2. 10:23
@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
- 하위 어노테이션 모두 같은 의미임