2009-04-16 3 views
66

Spring 프레임 워크에서 어떤 디자인 패턴이 사용됩니까?Spring 프레임 워크에서 어떤 디자인 패턴이 사용됩니까?

+0

..MVC, 프런트 컨트롤러, 보기 도우미, 싱글 톤, 프로토 타입, 공장 등 10 개 이상의 패턴이 포함됩니다. http://www.javabench.in/2012/02/design-patterns-being-used-in-spring.html –

+0

디자인 패턴 - MVC 패턴, 프록시 패턴, 팩토리 패턴, 싱글 톤 패턴, 템플릿 메소드 패턴, FrontController 패턴, 도우미 패턴보기, Prototype PatternDI/IOC 패턴. Reference-http : //javainuse.com/spring/spring-design-patterns – Gordan

답변

51

사용 다른 디자인 패턴의 부하가 있지만 몇 가지 분명한 사람이 있습니다

  • 프록시 - AOPremoting에 많이 사용이.

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

  • 템플릿 방법 - 보일러 플레이트 반복 코드 (예 : 연결 닫기 등)에 광범위하게 사용됩니다. 예를 들어, JdbcTemplate, JmsTemplate, JpaTemplate. 코멘트를 다음


업데이트 : MVC를 들어, MVC에 MVC Reference

에게 사용의 일부 명백한 패턴을 읽을 수 있습니다

  • Model View Controller :-)를. Spring MVC의 장점은 컨트롤러가 서블릿이 아닌 POJO 인 점이다. 이렇게하면 컨트롤러를 더 쉽게 테스트 할 수 있습니다. 한 가지주의 할 점은 컨트롤러는 논리적 뷰 이름 만 반환해야하며 뷰 선택은 별도의 ViewResolver으로 남겨 둡니다. 따라서 서로 다른 뷰 기술에 맞게 컨트롤러를 쉽게 재사용 할 수 있습니다.

  • Front Controller. Spring은 들어오는 요청이 컨트롤러에 전달되도록 보장하기 위해 DispatcherServlet을 제공합니다.

  • View Helper - 스프링에는 사용자 정의 JSP 태그 및 속도 매크로가있어보기에서 코드를 프레젠테이션과 구분할 수 있습니다.

+0

감사합니다, 스프링 MVC 모듈에서 사용되는 디자인 패턴은 무엇입니까? – Tony

+8

스프링이 콩에 싱글 톤을 구현한다고 생각하지 않습니다. 싱글 톤 범위 Bean에는 응용 프로그램 컨텍스트 ** 당 하나의 인스턴스 **가 있습니다. 따라서 응용 프로그램에 두 개의 Spring 컨텍스트가있는 경우 동일한 단일 bean 'Foo'를로드하고 컨텍스트마다'Foo '인스턴스를 검색하면 서로 다른 두 개의 객체 참조가 생성됩니다. 대신 여기에 적용된 디자인 패턴은 [flyweight] (http://en.wikipedia.org/wiki/Flyweight_pattern) –

+0

@ Luisi Mendoza 당신은 봄에 싱글 톤 객체가 없다는 것을 의미합니까? 제발 좀 설명해주세요. –

10

물론 BeanFactory/ApplicationContext 전체의 중심 인 종속성 삽입 또는 IoC (제어 반전).

4

봄은 모범 사례 API 패턴의 모음이므로 팔 길이만큼 쇼핑 목록을 작성할 수 있습니다. API가 설계된 방식은 이러한 패턴을 따르도록 (그러나 강제하지는 않음), 그렇게하는 것을 모른 채 반 시간 동안 따르도록 유도합니다.

6

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

0

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

1

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

0

스프링 컨테이너는 빈 범위 (단독, 원형 등)에 따라 빈 오브젝트를 생성하는 이벤트의 ApplicationContext의기구에 사용된다. 따라서 이것은 Abstract Factory pattern을 구현하는 것과 같습니다. Spring의 내부 구현에서 각 범위는 특정 공장 종류 클래스에 연결되어야한다고 확신합니다.

3

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

관련 문제