빈으로 사용될 클래스에 annotation을 달아주면 자동으로 빈이 등록됩니다.
Annotation으로 빈을 설정할 경우, 반드시 component-scan을 설정해야 합니다.
<context:component-scan base-package="com.test.hello.*"/>
위 코드는 해당 base-package에서 만약 annotation @Component가 정의된 클래스가 있다면,
<bean class="패키지명.class명">으로 관리하겠다는 뜻입니다.
Data Access Layer의 DAO 또는 Repository 클래스에 사용합니다.
Service Layer의 클래스에 사용합니다.
Presentation Layer의 Controller에 사용합니다.
위 세 가지 layer 구분에 적용하기 어려운, 일반적인 경우에 사용합니다.
타입에 맞춰서 연결합니다.
멤버변수와 setter method에 사용 가능합니다.
@Component
public class BookServiceImple implements BookService {
@Resource(name="bdao")
BookDao bookDao;
}
타입에 맞춰서 연결합니다.
멤버변수, setter, constructor, 일반 method에 사용 가능합니다.
@Autowired
public BookServiceImpl(@Qualifier("bdao") BookDao bookDao, @Qualifier("adao") AdminDao adminDao) {
super();
this.bookDao = bookDao;
this.adminDao = adminDao;
}
동일한 타입인 bean이 여러 개 있을 경우,
@Qualifer("name")을 사용하여 식별합니다.
이름에 맞춰서 연결합니다.
멤버변수, setter, constructor, 일반 method에 사용 가능합니다.
@Inject
public BookServiceImpl(BookDao bookDao) {
super();
this.bookDao = bookDao;
this.adminDao = adminDao;
}