2012-01-21 1 views
1

스프링 MVC의 주석 기반 모델을 편리하게 사용할 수 있지만 Flex 월드에서 나온 것처럼 Command 디자인 패턴을 사용하는 데 많이 익숙하다. 추상화 수준을 줄이고 일반적인 명령 기능을 확장하여 유연성을 확보하는 것이 매우 쉽습니다. 그러나 Spring 환경에 맞추기가 어렵습니다.스프링 MVC 주석 구동 클래스와 순수 명령어

이상적인 경우에는 요청 매개 변수 (또는 URL 경로 변수)를 기반으로 다른 명령 (또는 일련의 명령)을 실행하는 일반 HandleWebRequestCommand 클래스가 아닌 컨트롤러가 없어야합니다. 다른 명령은 원격 서비스 호출, DB 검색/지속성 처리, 파일 조작 등을 담당합니다. 이로 인해 전체 Controller/Service/Persistence 케익이 교환 및 연결 해제 명령 집합으로 축소됩니다.

지금까지 가장 어려운 부분은 일어나고있는 명령과 실행해야하는 명령 간의 매핑을 만드는 것처럼 보입니다. 모든 명령이 선언 된이 목적에 매우 적합한 XML 컨텍스트와 유사한 파일을 볼 수 있습니다. 또한, 의존성이 제공 될 것입니다 (모든 명령은 의존하는 다른 명령 세트를 가질 수 있습니다 (물론 인터페이스가 있습니다)). 지금까지는 이벤트 중심 아키텍처의 사용을 예상하지 않았습니다. 대부분의 명령 HTTP 요청의 결과로 여전히 실행되므로 가장 중요한 매핑은 HandleWebRequestCommand 내에있는 것입니다.

혼란 스럽습니다. 도와주세요. 나는이 봄을 잘 지켜야 하는가 아니면 Java EE 위에 직접 내 자신의 아키텍처를 개발할 것인가? 그런 건축은 전혀 괜찮습니까?

답변

4

나는 당신이 아직 봄을 보지 못했다고 생각합니다.

"일반적인 하나의 HandleWebRequestCommand 클래스"가 이미 존재합니다. 이것은 컨트롤러에 라우팅되는 방식입니다. "명령"은 (대략적으로) 서비스이며 여러 가지 방법으로 작성하고 결합 할 수 있습니다.

봄은 대부분 존재하며, 물건을 정확히 분리하기 때문에 꽤 잘됩니다. 좀 더 구체적인 도움을 원한다면


, 당신은 아마 사람들이 하나의 패러다임에서 다른지도를 할 수 있도록, 당신은 당신이 봄으로 깨끗하게 할 수없는 생각의 간결한 예제를 게시 할 수 있습니다.

+0

명령! = 서비스. 커맨드는 훨씬 세분화되어 있으며, 여러 가지 관심사를 교차 적용 할 수 있습니다. 이들은 엄격한 one-execute-method 디자인 패턴을 따르므로 한 패턴을 다른 패턴으로 쉽게 전환 할 수 있습니다. – preslavrachev

+1

@ user1107412 인공적인 구별을하고 있습니다. 원하는 서비스를 원하는대로 세분화 할 수 있습니다. –

+0

@ user1107412 결론은 당신이 원한다면 무엇이든 원하는대로 호출 할 수 있으며, 각각 큰 것으로부터 작은 것으로 모든 작업을 수행 할 수 있다는 것입니다. –