Spring 프레임 워크에서 사용되는 디자인 패턴은 무엇입니까? [닫은]


90

Spring 프레임 워크에서 사용되는 디자인 패턴은 무엇입니까?


..MVC, Front controller, View Helper, Singleton, Prototype, Factory 등 10 개 이상의 패턴을 포함합니다. javabench.in/2012/02/design-patterns-being-used-in-spring.html
Raúl

답변:


74

다양한 디자인 패턴이 사용되지만 몇 가지 명백한 패턴이 있습니다.

  • 프록시 -AOP원격 에서 많이 사용됩니다 .

  • 싱글 톤-스프링 구성 파일에 정의 된 빈은 기본적으로 싱글 톤입니다.

  • 템플릿 방법-반복되는 반복 코드를 처리하는 데 광범위하게 사용됩니다 (예 : 연결을 깨끗하게 닫는 등). 예를 들어 JdbcTemplate , JmsTemplate , JpaTemplate 입니다.


다음 주석 업데이트 : MVC의 경우 MVC 참조 를 읽을 수 있습니다.

MVC에서 사용되는 몇 가지 명백한 패턴 :

  • 모델보기 컨트롤러 :-). Spring MVC의 장점은 컨트롤러가 서블릿이 아니라 POJO라는 것입니다. 이렇게하면 컨트롤러를보다 쉽게 ​​테스트 할 수 있습니다. 한 가지주의 할 점은 컨트롤러는 논리 뷰 이름을 반환하는 데만 필요하며 뷰 선택은 별도의 ViewResolver에 남겨진다는 것 입니다. 이를 통해 다른 뷰 기술에 컨트롤러를 더 쉽게 재사용 할 수 있습니다.

  • 전면 컨트롤러 . Spring은 들어오는 요청이 컨트롤러로 발송되도록 DispatcherServlet 을 제공합니다 .

  • View Helper -Spring은 뷰의 표현에서 코드를 분리하는 데 도움이되는 여러 사용자 정의 JSP 태그와 속도 매크로를 가지고 있습니다.


감사합니다. Spring MVC 모듈에서 사용되는 디자인 패턴은 무엇입니까?
Tony

10
나는 Spring이 빈에 대해 싱글 톤을 구현한다고 생각하지 않는다. 단일 범위 Bean은 애플리케이션 컨텍스트 당 단일 인스턴스를 갖습니다 . 따라서 애플리케이션에 두 개의 Spring 컨텍스트가있는 경우 동일한 싱글 톤 Bean을로드하고 컨텍스트 별 Foo인스턴스를 검색하면 Foo두 개의 다른 오브젝트 참조를 얻게됩니다. 대신 여기에 적용된 디자인 패턴은 flyweight입니다
Luiggi Mendoza 2014

@Luiggi Mendoza 당신은 봄에 단일 객체가 없다는 것을 의미합니까? 좀 더 설명해주세요.
Kumaresan Perumal 2015

1
@KumaresanPerumal Singleton 패턴과 Singleton 인스턴스 사이에는 상당한 차이가 있습니다 (대문자 / 소문자 S에주의). 싱글 톤 패턴은 전체 애플리케이션을 통해 객체의 단일 인스턴스를 유지하는 것입니다. 싱글 톤 빈을 감지 할 때 Spring이하는 일은 애플리케이션 컨텍스트마다 단일 인스턴스를 만드는 것 입니다. 애플리케이션 컨텍스트는 Spring의 핵심 구성 요소이며 객체 생성 및 검색을 위임하는 역할을합니다. 싱글 톤 Bean은 애플리케이션 컨텍스트 당 한 번만 작성됩니다.
Luiggi Mendoza

모델보기 컨트롤러, 전면 컨트롤러 및보기에 대한 링크는 oracle.com/technetwork/java/index.html 로 이동 합니다 . 작동하는 링크로 답변을 업데이트 해 주시겠습니까?
SpringLearner 2017

12

물론 종속성 주입 또는 IoC (제어 반전)는 전체 BeanFactory / ApplicationContext 항목의 중심입니다.


10

DI는 실제로 일종의 전략 패턴입니다. 로직 / 구현을 교환 할 수 있기를 원할 때마다 일반적으로 호스트 클래스에서 인터페이스와 적절한 setter 메서드를 찾아 해당 인터페이스의 사용자 지정 구현을 연결합니다.


마스터 자체의 답변입니다. @Oliver 여기에 더 많은 패턴을 말할 수 있습니까?
Gaurav

7

Spring은 가장 많이 사용되는 API 패턴의 모음으로, 팔만큼 긴 쇼핑 목록을 작성할 수 있습니다. API가 디자인 된 방식은 이러한 패턴을 따르도록 권장하지만 (강제하지는 않음) 이러한 패턴을 따르고 있다는 사실을 모르고 따라가는 시간의 절반이됩니다.


3

Service Locator Pattern-ServiceLocatorFactoryBean은 컨텍스트에있는 모든 빈의 정보를 유지합니다. 클라이언트 코드가 이름을 사용하여 서비스 (빈)를 요청하면 컨텍스트에서 해당 빈을 찾아 반환합니다. 클라이언트 코드는 빈을 찾기 위해 스프링 관련 코드를 작성할 필요가 없습니다.


2

Observer-Observable : ApplicationContext의 이벤트 메커니즘에서 사용됩니다.


1

Factory 패턴은 BeanFactory 및 Application 컨텍스트를 통해 Bean을로드하는데도 사용됩니다.


1

Factory Method patter : 객체의 인스턴스를 생성하기위한 BeanFactory Singleton : 컨텍스트에 대한 인스턴스 유형은 싱글 톤이 될 수 있습니다. Prototype : 인스턴스 유형은 프로토 타입이 될 수 있습니다. 빌더 패턴 : 복잡한 인스턴스 생성을 담당 할 클래스의 메서드를 정의 할 수도 있습니다.


0

Spring 컨테이너는 빈 범위 (싱글 톤, 프로토 타입 등)에 따라 빈 객체를 생성합니다. 그래서 이것은 Abstract Factory 패턴을 구현하는 것과 같습니다 . Spring의 내부 구현에서는 각 범위가 특정 팩토리 종류 클래스에 연결되어야한다고 확신합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.