서비스(Service) 아키텍처 규칙 문의
- 작성자 :
- 박*진
- 작성일 :
- 2021-10-13 22:25:44
- 조회수 :
- 3,035
- 구분 :
- 호환성확인
- 진행상태 :
- 완료
Q
수고많으십니다.
"서비스 아키텍처 규칙" 에 관한 호환성 가이드라인을 보면
Service interface를 만들고, 이를 확장한 ServiceImpl 구조를 사용하게끔 가이드하고 있습니다.
예)
인터페이스객체: PayService.java(interface),
구현객체: InicisPayServiceImpl extends EgovAbstractServiceImpl implements PayService(@Service("inicisPayService") {...}
DacomPayServiceImple extends EgovAbstractServiceImpl implements PayService (@Service("dacomPayService") {...}
Controller에서 사용 = > @Resource("inicisPayService")
[질문]
위의 예는 하나의 인터페이스객체에 2개의 구현객체가 존재하여 일관성 및 활용성(디자인패턴)을 위해 가져가는 구조일 것입니다.
이를 고려해서 전자정부 프레임워크에서도 가이드를 이렇게 하고 있을 거고요.
그런데 하나의 interface와 하나의 구현객체라면 이런 구조를 만들어 사용하는 것이 dummy 작업 이상의 의미가 있는 것인지,, 전자정부프레임워크 측의 의견을 듣고자 합니다.
그리고 하나의 interface와 하나의 구현객체라면 아래와 같이 개발을 진행하는 것이 "호환성"을 어기는 것인지도 답을 듣고자 합니다.
@Service("payService")
PayService extends EgovAbstractServiceImpl {...}
제가 경력 20년이 넘었고, 스프링프레임워크가 발전하면서 Service-ServiceImpl 구조를 더이상 사용하지 않기에 이렇게 문의 드립니다.
답변 미리 고맙습니다.
"서비스 아키텍처 규칙" 에 관한 호환성 가이드라인을 보면
Service interface를 만들고, 이를 확장한 ServiceImpl 구조를 사용하게끔 가이드하고 있습니다.
예)
인터페이스객체: PayService.java(interface),
구현객체: InicisPayServiceImpl extends EgovAbstractServiceImpl implements PayService(@Service("inicisPayService") {...}
DacomPayServiceImple extends EgovAbstractServiceImpl implements PayService (@Service("dacomPayService") {...}
Controller에서 사용 = > @Resource("inicisPayService")
[질문]
위의 예는 하나의 인터페이스객체에 2개의 구현객체가 존재하여 일관성 및 활용성(디자인패턴)을 위해 가져가는 구조일 것입니다.
이를 고려해서 전자정부 프레임워크에서도 가이드를 이렇게 하고 있을 거고요.
그런데 하나의 interface와 하나의 구현객체라면 이런 구조를 만들어 사용하는 것이 dummy 작업 이상의 의미가 있는 것인지,, 전자정부프레임워크 측의 의견을 듣고자 합니다.
그리고 하나의 interface와 하나의 구현객체라면 아래와 같이 개발을 진행하는 것이 "호환성"을 어기는 것인지도 답을 듣고자 합니다.
@Service("payService")
PayService extends EgovAbstractServiceImpl {...}
제가 경력 20년이 넘었고, 스프링프레임워크가 발전하면서 Service-ServiceImpl 구조를 더이상 사용하지 않기에 이렇게 문의 드립니다.
답변 미리 고맙습니다.
환경정보
-
- OS 정보 : Windows10
- 표준프레임워크 버전 : 3.9
- JDK(JRE) 정보 : jdk1.8.0_77
- WAS 정보 : Tomcat9.0
- DB 정보 : Maria
- 기타 환경 정보 :
A
안녕하세요.
표준프레임워크센터 입니다.
CGLIB, Aspect/J 기반 방식으로
AOP 또는 트랜잭션 처리가 되도록 구성이 된 설정인 경우
Interface를 반드시 생성할 필요는 없습니다.
이경우 EgovAbstractServiceImpl 클래스만 상속 받으시면
조건을 충족했다고 볼수 있을듯 합니다.
감사합니다.
표준프레임워크센터 입니다.
CGLIB, Aspect/J 기반 방식으로
AOP 또는 트랜잭션 처리가 되도록 구성이 된 설정인 경우
Interface를 반드시 생성할 필요는 없습니다.
이경우 EgovAbstractServiceImpl 클래스만 상속 받으시면
조건을 충족했다고 볼수 있을듯 합니다.
감사합니다.