새소식

인기 검색어

개인공부/SPRING

@Autowired 애노테이션

  • -
package config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import spring.ChangePasswordService;
import spring.MemberDao;
import spring.MemberInfoPrinter;
import spring.MemberListPrinter;
import spring.MemberPrinter;
import spring.MemberRegisterService;
import spring.VersionPrinter;

@Configuration
public class AppCtx {

	@Bean
	public MemberDao memberDao() {
		return new MemberDao();
	}
//ChangePasswordService클래스의 memberDao 필드에 @AUTOWIRED 애노테이션을 붙이기 전	
	@Bean
	public ChangePasswordService changePwdSvc() {
		ChangePasswordService pwdSvc = new ChangePasswordService();
		pwdSvc.setMemberDao(memberDao());
		return pwdSvc;
	}
//ChangePasswordService클래스의 memberDao 필드에 @AUTOWIRED 애노테이션을 붙인 후 	
	@Bean
	public ChangePasswordService changePwdSvc() {
   		ChangePasswordService pwdSvc = new ChangePasswordService();
		return new ChangePasswordService();
	}
}

@Autowired 애노테이션을 memberDao 필드에 붙였으므로 ChangePasswordService 클래스의 setMemberDao() 메서드를 호출해서 MemberDao 빈 객체를 주입하지 않아도 스프링이 MemberDao타입의 빈 객체를 주입하기 떄문이다.

 

 

@Autowired
public void setMemberDao(MemberDao memberDao) {
	this.memDao = memberDao;
}

@Autowired
@Qualifier("printer")
public void setPrinter(MemberPrinter printer) {
	this.printer = printer;
}

@Autowired 애놑이션은 메서드에도 붙일 수 있다.

빈 객체의 메서드에 @Autowired 애노테이션을 붙이면 스프링은 해당 메서드를 호출한다. 이떄 메서드 파라미터 타입에 해당하는 빈 객체를 찾아 인자로 주입한다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.