ABAP 에서 자바 Spring 의존 주입 시 뮬 레이 션

Dependency Injection - 주입 에 의존 하여 자바 Spring 프레임 워 크 에서 광범 위 하 게 응용 되 고 있 습 니 다.의존 주입 을 통 해 우 리 는 응용 코드 에서 의존 하 는 자원 을 번 거 롭 게 초기 화 할 필요 가 없어 서 매우 편리 하 다.
그렇다면 ABAP 는 언어 차원 에서 도 의존 주입 을 지원 하고 이런 디자인 사고방식 이 가 져 오 는 편 의 를 누 릴 수 있 을 까?한번 해 보 자.
시도 장면
현실 생활 에서 모든 등 은 스위치 제어 가 있다.스위치 를 누 르 면 불 이 켜 집 니 다.다시 한 번 누 르 면 불 이 꺼진다.
주입 에 의존 하지 않 는 일반적인 구현 을 먼저 봅 니 다.
ABAP interface ZIF 설계SWITCHABLE, 두 가지 방법 을 제공 하여 각각 개폐 와 닫 기 에 대응 합 니 다.
자 연 스 럽 게 저 는 ABAP 류 ZCL 이 있 습 니 다.LAMP, 상기 인 터 페 이 스 를 실현 하 는 데 사 용 됩 니 다.각 ZCLLAMP 의 실례 는 바로 등불 이다.
CLASS ZCL_LAMP IMPLEMENTATION.

method ZIF_SWITCHABLE~OFF.

WRITE: / 'lamp off'.

endmethod.

method ZIF_SWITCHABLE~ON.

WRITE: / 'lamp on'.

endmethod.

ENDCLASS.

스위치 클래스 를 하나 더 설계 합 니 다. 이 클래스 는 구성원 변수 mo 가 있 습 니 다.switchable, 가리 키 는 ZIFSWITCHABLE 이 인터페이스.
스위치 에 누 르 는 방법 이 있다.누 른 후 현재 상태 가 켜 져 있 으 면 mo 를 호출 합 니 다.switchable 멤버 의 off 방법 은 닫 고 스위치 상 태 를 닫 는 것 으로 설정 합 니 다.반대로 도 마찬가지다.
METHOD push.

IF isswitchon = abap_true.

mo_switchable->off( ).

isswitchon = abap_false.

ELSE.

mo_switchable->on( ).

isswitchon = abap_true.

ENDIF.

ENDMETHOD.

setter 방법 을 제공 합 니 다. 들 어 오 는 종 류 는 ZIF 입 니 다.SWITCHABLE 의 변 수 를 멤버 변수 mo 에 주입 합 니 다.switchable 중.
method SET_SWITCHABLE.

mo_switchable = io_switchable.

endmethod.

나 는 지금까지 만 든 두 가지 종 류 를: ZCLLAMP 와 ZCLSWITCH 모두 package $ZDEV인 버 전 안에.
ABAP Summer 프레임 워 크 의 소비 코드
아래 그림 의 코드 를 보면 ZCLSWITCH 와 ZCLLAMP 는 강 한 의존 관 계 를 형성 했다.이러한 의존 관 계 는 개발 자 들 이 set 방법 을 사용 하여 수 동 으로 주입 한 것 이다.
위의 그림 코드 중 어떤 것 이 자바 스프링 에서 주입 에 의존 하 는 사상 을 통 해 피 할 수 있 는 지 정리 해 보 자.
line 8: 수 동 으로 ZCL 만 들 기LAMP (등) 의 인 스 턴 스 입 니 다.
line 9: 수 동 으로 ZCL 만 들 기SWITCH (스위치) 의 인 스 턴 스 입 니 다.
line 11: set 방법 으로 수 동 주입 등 과 스위치 의 의존 관 계 를 호출 합 니 다.
ABAP Summer 프레임 워 크 를 사용 하여 의존 주입 실현
저 는 ABAP 로 자바 Spring 의 의존 주입 프레임 워 크 를 모 의 하여 원형 을 개 발 했 습 니 다. ABAP Summer 라 는 이름 을 지어 자바 의 Spring 과 호응 합 니 다.
먼저 이 간단 한 예 를 자바 스프링 으로 어떻게 실현 할 것 인 가 를 생각해 보 자.자바 프로그래머 는 다음 코드 를 쉽게 쓸 수 있 습 니 다. Spring 의 주해 @ Inject 를 이용 하여 수 동 으로 ISwitchable 과 set 방법 을 사용 하여 의존 할 필요 가 없습니다.모든 것 은 Spring 프레임 워 크 가 우 리 를 도와 실현 되 었 다.
이제 어떻게 ABAP 로 이런 '마술' 을 실현 합 니까?
1. ZCL 에서SWITCH 클래스 의 구성원 변수 moswitchable 의 설명 필드 에 주 해 를 추가 합 니 다 @ Inject, 의 도 는 ABAP Summer 프레임 워 크 를 알려 주 는 것 입 니 다. 저 는 moswitchable 멤버 들 은 자동 으로 정확 한 의존 을 주입 할 수 있 습 니 다.도대체 어떤 의존 이 정확 합 니까?Summer 프레임 워 크 는 어떻게 주입 해 야 하 는 지 알 수 있 습 니까?계속 읽 으 세 요.
메모: ABAP 라 는 언어 는 자바 와 달리 언어 차원 에서 주 해 를 지원 할 수 없 기 때문에 설명 필드 에서 유지 하 는 @ Inject 는 시 뮬 레이 션 일 뿐 입 니 다.
2. 주입 에 의존 하 는 ABAP 소비 코드 를 사용 한 것 부터 살 펴 보면 한 번 에 시원해 지지 않 나 요?
data(summer) = zcl_summer=>get_instance( ).

data(lo_switch) = cast zcl_switch( summer->get_bean( EXPORTING iv_bean_name = 'ZCL_SWITCH' ) ).

lo_switch->push( ).

lo_switch->push( ).

다음 그림 은 ABAP 의 일반적인 실현 과 ABAP 의존 주입 사상 을 바탕 으로 하 는 두 가지 소비 코드 를 비교 한 결과 ABAP 의존 주입 을 한 후에
앞서 언급 한 이 세 곳 의 수 동 조작 은 완전히 피 할 수 있다.GET_BEAN 방법 으로 되 돌아 오 는 스위치 인 스 턴 스, 안에 있 는 멤버 변수 moswitchable 은 자동 으로 주입 되 는 ZCL 을 포함 합 니 다.LAMP 클래스 의 인 스 턴 스 입 니 다.
line 8: 수 동 으로 ZCL 만 들 기LAMP (등) 의 인 스 턴 스 입 니 다.
line 9: 수 동 으로 ZCL 만 들 기SWITCH (스위치) 의 인 스 턴 스 입 니 다.
line 11: set 방법 으로 수 동 주입 등 과 스위치 의 의존 관 계 를 호출 합 니 다.
자바 스프링 의 정통 소비 코드 를 살 펴 보고 우리 가 발명 한 ABAP Summer 가 확실히 오리지널 의존 주입 임 을 확인 합 니 다.
ABAP Summer 의존 주입 의 실현 원리
이 ABAP 는 주입 프레임 워 크 의 실현 에 의존 합 니 다.
https://github.com/i042416/je...
자바 스프링 의존 주입 에 대한 설명 에 대해 인터넷 에는 멋 지게 쓴 저서 가 많다.
다음은 ABAP Summer 의존 주입 의 핵심 실현 으로 위의 저서 에서 자바 스프링 에 관 한 설명 을 참고 했다.
더 많은 Jerry 의 오리지널 기술 글 을 얻 으 려 면 대중 번호 인 '왕 자 희' 를 주목 하거나 다음 QR 코드 를 스 캔 하 십시오.

좋은 웹페이지 즐겨찾기