현재 위치 - 대출자문플랫폼 - 외환 플랫폼 - Golang 반사 프레임 Fx

Golang 반사 프레임 Fx

Fx 는 golang 버전의 의존성 주입 프레임워크로, golang 가 재사용 가능하고 결합 가능한 모듈화를 통해 golang 어플리케이션을 쉽게 구축할 수 있도록 합니다. 다음을 프로젝트에 직접 추가하여 Fx 효과를 체험할 수 있습니다.

Fx 는 다른 함수 호출의 복잡성을 수동으로 연결하는 대신 종속 주입을 사용하여 다른 종속 주입 방법과는 다릅니다. Fx 는 struct 태그를 사용하거나 특정 유형을 포함하지 않고 일반 golang 함수처럼 사용할 수 있습니다. 이를 통해 Fx 는 많은 go 패키지에서 잘 사용할 수 있습니다.

다음으로 Fx 에 대한 간단한 데모와 몇 가지 정의를 설명하겠습니다.

1, 일반 단계

일반적인 사용 단계는 다음과 같습니다. 일부 전체 데모는 아래에 나와 있습니다.

2, 간단한 데모

Io.reader 를 특정 구현 클래스와 연관시킵니다.

출력:

3. struct 매개변수를 사용합니다

이전의 사용 모델은 일단 주입 유형이 너무 많으면 struct 매개 변수 방법을 사용하여 해결할 수 있습니다.

출력물

Provide 에서 제공하는 생성자를 통해 동일한 유형을 생성하는 데 문제가 있으면 어떻게 됩니까? 즉, 같은 유형에 여러 값이 있다면 어떨까요?

다음 두 가지 방법은 이 문제를 해결하는 것이다.

4. struct 매개 변수 +Name 태그를 사용합니다.

Fx 에서 이름 또는 그룹 레이블을 사용하지 않는 경우 동일한 유형의 생성자를 여러 개 사용할 수 없습니다. 일단 그들이 존재하면 공황을 일으킬 수 있다.

출력물

같은 유형을 위의 Name 태그를 통해 Fx 컨테이너에 주입할 수 있습니다.

5. 구조 매개변수+그룹 태그를 사용합니다.

Group 태그를 사용하여 이러한 기능을 수행할 수도 있습니다.

출력물

기본적으로 위의 예에서 Fx 의 간단한 응용에 대해서도 간략하게 설명합니다.

1, 주석 포함 (annotated.go 파일) 은 주로 주석 포함 방식으로 제공되는 주입 유형에 사용됩니다.

소스 코드의 두 필드인 Name 과 Group 은 위에서 언급한 Name 및 Group 태그와 동일하며 하나만 사용할 수 있습니다.

2.App (app.go 파일) 는 객체 주입을 위한 특정 컨테이너, LiftCycle, 시작 및 중지 컨테이너, 주입 유형 변수 및 구현 클래스, 매핑 등을 제공합니다.

Provide 와 Populate 의 소스 코드는 비교적 간단하고 이해하기 쉬우므로 여기서는 설명하지 않습니다.

특정 소스 코드

3. 추출 (extract.go 파일에 있음)

주로 시작 적용 초기화 중 컨테이너의 변수 값을 주입에 의존하여 지정된 struct 에 채우는 데 사용됩니다. 여기서 target 은 struct 에 대한 포인터여야 하며 내보낼 수 있는 필드만 채울 수 있습니다 (golang 은 반사를 통해서만 내보낼 수 있고 주소 지정 가능한 필드를 수정할 수 있음). Extract 는 Populate 로 대체됩니다. 특정 소스 코드

4. 기타

예를 들어, Populate 는 Extract 대신 사용되며, LiftCycle 과 inout.go 에는 많은 내용이 포함되어 있으며, 그 다음에는 고유한 문서 설명이 별도로 제공됩니다.

Fx 에 제공된 생성자는 게으른 호출이며 일부 필요한 초기화 작업은 application: FX 의 호출을 통해 수행할 수 있습니다. Invoke (함수); 필요에 따라 LiftCycle 을 구현하는 갈고리에 해당하는 OnStart 및 OnStop 을 사용자 정의하여 실제 비즈니스 요구에 맞게 컨테이너를 수동으로 시작 및 종료할 수 있습니다.

Fx 프레임 워크 소스 코드 분석

주로 app.go, lifecycle, annotated.go, populate.go, inout.go, shutdown.go, extract ...

copyright 2024대출자문플랫폼