일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 공부를열심히
- 객체지향
- 주말이다..
- Oracle
- squery
- ERWin
- sql
- Java
- 프로젝트
- DB
- 객제지향
- web
- 오라클
- 객체지향프로그래밍
- jsp
- CSS
- 객제지향프로그래밍
- 코딩
- 프로그래밍
- 테이블
- 자바
- 웹
- 웹프로그래밍
- html
- 데이터베이스
- Project
- 공부
- javascript
- orcle
- UI
Archives
- Today
- Total
햄찌개
[Spring] Annotation 활성화 본문
GoalAnnotation
- 기본 개념을 이해한다
- .Annotation를 활성화할 수 있다.
- annotation-driven, component-scan, annotation-config 차이를 이해한다.
Annotation 기본 개념
- xml 설정이 너무 길어짐에 따라 그 대안으로 나타났다.
- 클래스/메서드/필드에 Annotation을 달아 그 자체로 설정이 가능하도록 한다. 단, xml이 우선순위가 더 높다.
- 기본적으로 활성화되지 않기 때문에 xml에 명시적인 활성화 작업이 필요하다. IDE에서 지원한다. (체크하면 자동으로 추가)
annotation-driven, component-scan, annotation-config 차이
mvc:annotation-driven
- 스프링 MVC 컴포넌트들을 그것의 디폴트 설정을 가지고 활성화하기 위해 사용된다.
- 이 태그는 Spring MVC가 @Controller에 요청을 보내기 위해 필요한 HandlerMapping과 HandlerAdapter를 bean으로 등록한다. 이렇게 등록된 bean에 의해 요청 url과 컨트롤러를 매칭할 수 있다.
또한 컨트롤러(@Controller)에서는 @RequestMapping, @ExceptionHandler 등과 같은 주석을 통해 해당 기능을 사용할 수 있도록 한다.
근본적으로 @Controller 없이는 이 태그는 아무것도 하지 않는다고 할 수 있다.
bean을 생성하기 위해 xml 파일에 context:component-scan을 명시하면 이 태그를 포함하지 않아도 MVC 애플리케이션은 작동한다. - RequestMappingHandlerMapping?
요청 url과 매칭되는 컨트롤러(@Controller)를 검색하는 역할. 즉, 요청 url을 보고 어떤 컨트롤러가 처리할지 결정한다. - RequestMappingHandlerAdapter?
컨트롤러의 실행 결과(요청을 처리한 결과)를 리턴하는 역할. Annotation 기반의 Controller 처리를 위해 반드시 필요하다.
context:component-scan
- 특정 패키지 안의 클래스들을 스캔하고, Annotation을 확인 후 bean 인스턴스를 생성한다.
@Component @Controller @Service @Repository 등의 Annotation이 존재해야 bean을 생성할 수 있다. - 이것의 장점 중 하나는 @Autowired와 @Qualifier Annotation을 인식할 수 있다.
- component-scan을 선언했다면 context:annotation-config를 선언할 필요가 없다.
context:annotation-config
- ApplicationContext 안에 이미 등록된 bean들의 Annotation을 활성화 하기 위해 사용된다.
bean들이 XML로 등록됐는지 혹은 패키지 스캐닝을 통해 등록됐는지는 중요하지 않다. - 이미 스프링 컨텍스트에 의해 생성되어 저장된 bean들에 대해서 @Autowired와 @Qualifier Annotation을 인식할 수 있다.
- component-scan 또한 같은 일을 할 수 있는데, context:annotation-config는 bean을 등록하는 작업을 하지 않는다.
즉, bean을 등록하기 위해 패키지를 안의 클래스를 스캔할 수 없다. - 이 태그를 설정하면 @Required @Autowired @Resource @PostConstruct @PreDestroy @Configuration 기능을 각각 설정하지 않아도 된다.
'웹기반어플리케이션' 카테고리의 다른 글
[Spring] AOP (0) | 2021.01.11 |
---|---|
REST (0) | 2021.01.08 |
[Java] Call by value와 Call by reference (0) | 2021.01.06 |
[Spring] DI(Dependency Injection) 의 정의와 사용 (0) | 2021.01.06 |
[Spring] Annotation 종류와 기능 (0) | 2021.01.06 |