@Controller와 @Component
설정 파일에 <context:component-scan base-package="spring.anno.ch05" /> 이런 식으로 한 줄을 넣어준 뒤
홈 컨트롤러에는 Controller, 워크 클래스에는 @Component를 삽입하면 자동으로 알아서 객체를 다 연결한다.
생성자 생성 필요없고, 설정파일에서 프로퍼티 설정도 필요없다.
설정 파일에 <context:component-scan /> 태그 사용시 해당 패키지에서 @Controller, @Component 어노테이션이 적용된 클래스를 검색하여 자동으로 Bean을 등록한다.
자동으로 등록된 빈의 아이디는 클래스 이름의 첫 글자를 소문자로 바꿔서 사용.
예) HomeController -> 빈 이름이 homeController 지정
빈의 이름을 다르게 지정하고 싶으면 @Component("home")과 같이 명시함.
또는 @Component @named("home")도 가능.
1) 홈 컨트롤러 클래스 : 클래스 위에 @Controller 사용
package spring.anno.ch05;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@Controller
public class HomeController {
@Autowired
private Worker worker;
@Override
public String toString() {
return "HomeController 클래서 실행=>"+worker;
}
}
2) Work 클래스 : 클래스 위에 @Component 사용
package spring.anno.ch05;
import org.springframework.stereotype.Component;
@Component
public class Worker {
@Override
public String toString() {
return "Worker 클래스 실행";
// shift+alt+s 후 s를 누르면 toString으로 필드 및 메서드 포함하여 자동완성 가능.
}
}
4) 설정 파일 : context:component-san base-package에 해당 클래스들의 패키지를 써넣는다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">
<!--
<context:annotation-config />
- RequiredAnnotationBeanPostProcessor
- AutowiredAnnotationBeanPostProcessor
- CommonAnnotationBeanPostProcessor 을 자동으로 추가한다.
-->
<context:component-scan base-package="spring.anno.ch05" />
</beans>
' Spring Framework' 카테고리의 다른 글
AOP 실습 (0) | 2016.03.31 |
---|---|
스프링에서 어노테이션을 이용한 MVC패턴 구성 (0) | 2016.03.31 |
@Resource : 이름으로 Bean을 지정하는 어노테이션 (0) | 2016.03.30 |
@Autowired : 객체를 자동으로 주입하는 어노테이션 (0) | 2016.03.30 |
@Required : 반드시 프로퍼티를 이용하여 값을 주입받도록 한다. (0) | 2016.03.30 |