어느 것이 더 낫습니다 : Spring MVC 또는 Struts?


최상의 답변

현재 Java 기술 스택에서 Spring MVC가 최상위에 있으며 Enterprise Java 애플리케이션을 빌드하는 데 광범위하게 사용되고 있습니다.

Spring MVC 수요가 많고 업데이트되었습니다. 그들은 때때로 봄의 새 버전을 출시합니다. Spring 보안은 애플리케이션을 보호하는 가장 좋은 방법 중 하나입니다. Struts는 고대입니다. 그러나 대부분의 레거시 애플리케이션이이를 사용하여 빌드되었으므로 여전히 존재합니다. 그러나 오늘날 애플리케이션을 구축하기 위해 Struts를 선택하는 개발자는 거의 없습니다.

다음을 사용하여 요구 사항을 쉽게 충족 할 수 있습니다. -Spring MVC : REST API 용, 클라이언트 서버 모델, SOA (Service Oriented Architecure). -Spring Security : 애플리케이션 보안을 위해. -Hibernate 또는 Spring JDBC 템플릿. (Hibernate로 이동) : 데이터베이스 처리 용-데이터베이스 용 MySQL. -JUnit for unit testing.

Answer

Spring 프레임 워크는 웹 도메인 아래의 MVC 모델보기 컨트롤러 인 여러 모듈로 구성됩니다.

Spring 모듈의 조감도를 따릅니다.

MVC : 웹 모듈이 MVC./Remoting이라고하는 것을 알 수 있습니다. 이 모듈은 웹 애플리케이션을 개발하는 데 필요한 모든 보일러 플레이트 코드로 구성됩니다. 여기에는 요청 처리, HTTP 메서드, URL 매핑,보기 확인자, JSP 태그 라이브러리, 세션이 포함됩니다. 22를 참조하세요. 자세한 내용은 웹 MVC 프레임 워크 를 참조하세요.

IOC-Inversion of Control : “전화하지 마세요. 전화하겠습니다.”

여기에 까다로운 부분이 있습니다. 보시다시피 IOC는 위의 모듈 다이어그램의 일부가 아닙니다. IOC는 다른 많은 것들과 함께 Spring Core 모듈의 일부입니다.

IOC는 Spring 이상입니다. 의존성을 줄이고 모듈성을 높이며 프로그램을 확장 할 수있는 객체 지향 설계 원칙입니다.

Martin Fowler는 제어 반전이 프로그램의 제어 흐름이 반전되는 원칙이라고 말합니다. 프로그래머가 제어하는 ​​대신 프로그램의 흐름에 따라 외부 소스 (프레임 워크, 서비스, 기타 구성 요소)가이를 제어합니다.

IOC는 다음과 같은 설계 문제를 해결합니다.

  • 실행 분리
  • 모듈이 설계된 작업에 집중하기 위해.
  • 다른 시스템이 수행하는 작업에 대한 가정에서 모듈을 해제하고 대신 c 가 시작됩니다.
  • 모듈 교체시 부작용을 방지합니다.

Spring이란 무엇인가? IOC.

Spring IOC는 봄에 IOC를 구현하는 방법입니다. IOC는 여러 가지 방법으로 달성 할 수 있습니다. 문서에 따르면-

객체가 생성자 인수, 팩토리 메서드에 대한 인수 또는 객체 인스턴스에 설정된 속성을 통해서만 작업하는 다른 객체 인 종속성을 정의하는 프로세스입니다. 팩토리 메서드에서 생성되거나 반환 된 후 그런 다음 컨테이너는 Bean을 생성 할 때 이러한 종속성을 주입 합니다. 이 프로세스는 근본적으로 역으로, 즉 Inversion of Control (IoC)라는 이름은 직접 구성을 사용하여 종속성의 인스턴스화 또는 위치를 제어하는 ​​Bean 자체의 이름입니다. 클래스 또는 Service Locator 패턴과 같은 메커니즘입니다.

In Spring org.springframework.beansorg.springframework.context에는 Spring IOC 컨테이너라는 IOC 구현이 포함되어 있습니다. 인터페이스 org.springframework.context.ApplicationContext는 Spring IoC 컨테이너를 나타내며 객체의 인스턴스화, 구성 및 조립을 담당합니다 (Spring에서는 객체가 Beans).

7. 자세한 내용은 IoC 컨테이너 BeanFactory (Spring Framework 4.3.7.RELEASE API) 를 참조하세요.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다