자동주입

조예빈·2024년 5월 10일
0

Spring

목록 보기
3/19
post-custom-banner

memberDAO를 주입해 주는 코드를 주석으로 막음


@Configuration
public class BeanConfig {
	@Bean
	public MemberDAO memberDAO() {
		return new MemberDAOImpl();
	}

	@Bean
	public MemberService memberService() {
		MemberServiceImpl m = new MemberServiceImpl();
		//m.setMemberDAO(memberDAO());
		return m;
	}
}

실행 시 nullPointerException이 뜬다

public class MemberServiceImpl implements MemberService { 

	@Autowired
	MemberDAO dao;
	public void setMemberDAO(MemberDAO dao) {
		this.dao = dao;
	}

	@Override
	public void regist() {
		// MemberDAO dao = new MemberDAO();
		dao.regist();
	}

}

@Autowired 어노테이션을 추가 해 주면 알아서 bean을 주입 해 준다(자동 주입)

이 때, 반드시 bean에 등록된 객체만 가능하다

자동 주입

  • bean 컨테이너에 생성되어 있는 객체만 가능
  • 기본적으로 type을 기준으로 주입
  • method 이름이 bean 이름인데, 같은 type의 bean이 두 개가 있으면 에러가 남 -> @Qualifier 어노테이션으로 빈 이름을 지정해 주어야 함
    - ex)@Qualifier("xxx")
  • 객체 간 의존성이 강할 때 사용함(컨트롤러와 서비스의 의존성은 강하므로 서비스에 빈 생성)

@Component

  • 대부분이 @Controller, @Service, @Repsitory로 씀
profile
컴퓨터가 이해하는 코드는 바보도 작성할 수 있다. 사람이 이해하도록 작성하는 프로그래머가 진정한 실력자다. -마틴 파울러
post-custom-banner

0개의 댓글