다른 경우 제거하는 방법을 봄 부팅?

수요

우리가 쉽게 이해할 수 있도록 여기에 가상 사업은 필요로한다. 순서에 따라 처리의 다른 유형의 기능을한다 광고 시스템이 존재한다고 가정.

주문 엔티티 :

 

 

 서비스 인터페이스 :

 

 

 

달성 전통

만약 다른 종류에 따라 주문의 무리를 쓰기 :

 

 

 

전략 패턴 구현

전략 모드를 사용하여, 당신은 단지 비즈니스 로직을 구현하는 두 줄이 필요합니다 :

 

 

 

HandlerContext로 상기 처리가이 컨텍스트 프로세서 다음 설명한다 구체적으로, 다른 업무를 저장하는데 사용되는 프로세서는 것을 알 수있다. 우리는 비즈니스 로직을 구현하는 메서드를 호출, 추상 프로세서 AbstractHandler을 유도.

우리는 지금 우리의 주요 비즈니스 로직은 프로세서에서 구현되는 것을 이해할 수 있으므로 주문 유형의 수, 그것은 프로세서의 수에 해당합니다. 수요의 변화는, 주문 유형을 증가 후에 만 ​​해당 프로세서는 변경없이 완전히 OrderServiceV2Impl 수 있습니다 추가해야합니다.

의 교통 프로세서의 표현을 살펴 보자 :

 

 

 

 

 

 

 

 

 

첫째, 각 프로세서는 스프링 컨테이너에 추가해야하기 때문에 실현하기 위해, 마지막이 AbstractHandler 상속, 주문 유형에 해당하는 프로세서를 식별하는 데 사용되는 사용자 정의 주석 @HandlerType를 추가 할 필요가 다음 @Component 메모를 추가 할 필요가 자신의 비즈니스 로직.

사용자 정의 주석 @HandlerType :

 

 

 추상 프로세서 AbstractHandler :

 

사용자 정의 주석 프로세서가 매우 간단하고 추상적이다, 어떻게 봄 그것에 컨테이너 프로세서를 등록?

구체적인 아이디어가 있습니다 :

도 1은, 지정된 패키지 @HandlerType 클래스 마크 검사;

2 키로 주석 형 값 맵에 저장된 카테고리에 대응하는 값으로;

3 스프링 컨테이너에 등록되어있는 상기지도 생성자 파라미터 초기화 HandlerContext, 마찬가지로;

우리는 핵심 기능 HandlerProcessor 클래스, 위의 기능의 완성 캡슐화됩니다.

처리기 프로세서 :

 

 

ClassScaner : 소스 코드 검사 도구

 

HandlerProcessor는 BeanFactoryPostProcessor를 치료 빈 전에 봄을 달성하는 데 필요한, 콩은 혈관에 사용자 정의 등록합니다.

코어 완성, 현재 방법 해당 프로세서를 구하는 모습 HandlerContext되었습니다

HandlerContext :

 

 

BeanTool은 : 콩 도구를 얻을 수

종류에 따라 해당 등급의 취득 #getInstance 방법은 다음 스프링 콩 유형에 따라 등록 클래스를 얻었다.

마지막으로, HandlerProcessor 및 BeanTool 스캔, 또는 @Bean의 방법에 의해 명시 적으로 프로젝트의 시작에 중요한 역할을하기 위해 등록 할 필요가 있다는 점 유의 하시길 바랍니다.

 

개요

코드, 쉬운 유지 보수 및 사용자 정의 주석과 자체 등록 모드를 사용하여, 당신은 쉽게 변화에 대한 수요에 대처할 수있는 다른 경우 활용 전략 모드는 복잡한 단순화합니다. 이 문서에서는 예를 들어, 주문 유형으로, 정적 또는 열거 형 상수 유형, 난 당신이 더 좋은 방법을 생각할 수있는 생각, 유연하게 변경할 수 있습니다 많은 세부 사항이 있습니다, 일반적인 생각을 제공합니다.

 

추천

출처www.cnblogs.com/zhaoyan001/p/11447666.html