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
    • 하위 어노테이션 모두 같은 의미임