Spring 2.5에서 Spring 3으로 마이그레이션하고 있습니다.
그들은 <mvc:annotation-driven />
흑 마술을하는 것을 소개했습니다 . 이것은 서블릿 구성 파일에서만 선언 될 것으로 예상됩니다.
Spring 2.5에서는 방금 스캔하고 적절한 기본 패키지로 Dispatcher 서블릿 구성 XML을 선언 <context:annotation-config />
하고 사용했습니다 .<context:component-scan base='...'/>
application-context.xml
서블릿 설정에서 mvc:annotation-driven
와 context:annotation-config
태그 의 차이점이 무엇이고 Spring 3 설정 파일에서 무엇을 제거 할 수 있는지 궁금 합니다.
답변
<context:annotation-config>
같은 일반적인 주석에 대한 지원을 선언 @Required
, @Autowired
, @PostConstruct
, 등을.
<mvc:annotation-driven />
주석 기반의 MVC 컨트롤러에 대한 명시 적으로 지원 선언 (즉 @RequestMapping
, @Controller
이들에 대한 지원은 기본 동작이지만) 선언을 통해 검증뿐만 아니라, 추가 지원 @Valid
과와 메시지 본문 마샬링 @RequestBody
/을 ResponseBody
.
답변
Spring 문서<mvc:annotation-driven />
에서의 사용에 대한 자세한 내용도 있습니다 . 간단히 말해서<mvc:annotation-driven />
Spring MVC의 내부 작동을보다 강력하게 제어 할 수 있습니다. 위에서 언급 한 문서 섹션에 설명 된 기능 중 하나 이상이 필요한 경우가 아니면이 도구를 사용할 필요가 없습니다.
또한 다른 스프링 모듈에서 추가 기능을 제공하기 위해 사용할 수있는 다른 “주석 기반”태그가 있습니다. 예를 들어 <transaction:annotation-driven />
@Transaction 어노테이션을 사용할 수있게하려면 <task:annotation-driven />
@Scheduled et al.
답변
mvc : annotation-driven 은 Spring 3.0에 추가 된 태그로 다음을 수행합니다.
- Spring 3 Type ConversionService를 구성합니다 (PropertyEditors 대신).
- @NumberFormat을 사용하여 숫자 필드 서식 지정 지원 추가
- Joda Time이 클래스 경로에있는 경우 @DateTimeFormat으로 Date, Calendar 및 Joda Time 필드의 서식 지정을 지원합니다.
- JSR-303 제공자가 클래스 경로에있는 경우 @Valid를 사용하여 @Controller 입력의 유효성 검증을 지원합니다.
- JAXB가 클래스 경로에있는 경우 XML 읽기 및 쓰기 지원 기능을 추가합니다 (@ RequestBody / @ ResponseBody를 사용한 HTTP 메시지 변환).
- Jackson이 클래스 경로에있는 경우 (# 5와 동일한 행에) JSON 읽기 및 쓰기 지원 추가
context : annotation-config
정의 된 동일한 애플리케이션 컨텍스트에서 Bean에 대한 주석을 찾고 @Autowired, @Resource, @Required, @PostConstruct 등과 같은 모든 일반 주석에 대한 지원을 선언합니다.