어느 것이 좋습니까? 봄 MVC에서는 모든 Controller
클래스에 @Controller
을 사용합니다. 그들은 마커 인터페이스를 사용할 수 있습니까? 어노테이션 접근 방식을 선택한 이유는 무엇입니까? component-scan
과 비슷한 controller-scan
과 비슷한 것을 가질 수 있으므로 패키지의 모든 클래스를 Controller 클래스로 가정 할 수 있습니다. 마찬가지로 service-scan
및 repository-scan
을 xml로 정의 할 수 있습니다.Annotation vs Spring MVC의 마커 인터페이스
답변
마커 인터페이스와 기술적으로 동일한 효과가있을 것이라고 생각합니다. 문제는 마커 인터페이스가 클래스로 제한되어 속성이나 메소드에 사용할 수 없다는 것입니다.
스프링은 메타 데이터를 속성 (예 : @Autowired
) 또는 메소드 (예 : @RequestMapping
또는 @Transactional
)에 추가하는 데 주석을 사용하고 있습니다. 클래스 (예 : @Controller
또는 @Service
)에 메타 데이터를 추가 할 때 동일한 접근 방식을 사용하는 것이 일관성이 있습니다.
Spring은 제공된 주석을 사용하도록 강요하지 않습니다. @Controller
및 @RequestMapping
은 핸들러 매핑을 정의하는 기본 방법 일뿐입니다. 이론적으로 들어오는 요청을 메소드 호출에 매핑하는 고유 한 방식을 제안 할 수 있습니다.
둘 다 처음에는 같은 목적으로 사용됩니다. 마킹 및 발견.
주석은 더 직접적인 표시를하기위한 것입니다. 마커 인터페이스는 실제로 유형을 정의하지만, 해당 유형의 변수를 선언 할 때 수행 할 수있는 것은 없습니다. 주석은 유형을 만들지 않으며 주석을 처리하는 코드에 따라 달라 지므로 의미를 부여합니다.
궁극적으로 이것은 맛의 문제입니다.
주석에는 추가 메타 데이터를 저장할 수 있다는 장점이 있습니다. @Named ("foo")와 같습니다. 마커 인터페이스는 모든 항목에 마커 인터페이스가 있음을 보장하는 컬렉션을 만드는 이점이 있습니다. 예 : 일반 또는 변수 유형에 특정 주석이 있어야한다는 제약 조건이 없습니다.
인터페이스의 메소드 대 메소드에 대한 주석의 경우 인터페이스의 메소드가 구현을 필요로한다는 문제가 있습니다 (Java 8에서는 더 이상 엄격하게 요구되지 않음) 클래스를 신속하게 다루기가 어렵게 만드는 반면 주석은 일률적으로 적용 할 수 있으며, 그러나 컴파일러는 올바른 메소드 서명을 시행 할 수 없습니다. 일부 주석에는 void foo (Bar bar)와 같은 메서드 서명이 필요하지만이 사실은 문서 (있는 경우)에서 조회해야합니다.
- 1. Stripes + Spring vs Spring MVC의 단점
- 2. spring @ Transactional annotation
- 3. Spring 2 Hibernate Annotation
- 4. @Scheduled annotation Spring
- 5. Spring Annotation Controller로 양식 제출
- 6. ASP.NET MVC의 인터페이스 인수
- 7. 자바 마커 인터페이스
- 8. 마커 인터페이스 (C#
- 9. CMFWorkflow 및 마커 인터페이스
- 10. 마커 인터페이스 란 무엇입니까?
- 11. 마커 인터페이스 란 무엇입니까?
- 12. Spring MVC의 유효성 확인
- 13. Spring MVC의 부분보기
- 14. Spring-MVC의 컴포넌트 컨트롤러
- 15. Spring MVC의 Http Session
- 16. Spring MVC의 애플리케이션 설계
- 17. Spring MVC의 글로벌 모델
- 18. struts2와 spring MVC의 차이점
- 19. Spring MVC의 커스텀 컨트롤러로부터 서비스 레이어에 접근하기
- 20. 인터페이스 구현 vs. 인터페이스 제공
- 21. Spring-ws VS Apache cxf VS Apache Axis2 VS Metro
- 22. 마커 인터페이스, 구현과 가져 오기
- 23. 마커 인터페이스 또는 특수 효과?
- 24. C#의 익명 마커 인터페이스?
- 25. Cache-Control : Spring-MVC의 private
- 26. Spring MVC의 폼 처리 페이지
- 27. Spring MVC의 showForm 메서드 대체
- 28. Spring MVC의 sample_en.jsp 및 sample_fr.jsp
- 29. Spring MVC의 다중 저장 목록?
- 30. ExtJS 및 Spring MVC의 i18n
맛/스타일의 문제 일지라도 좋은 질문입니다. 주석은 무거운 반성을 요구하면서'instanceof'를 사용하여 마커 인터페이스를 쉽게 발견 할 수 있습니다. –