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.