Injection scopes
Last updated
Last updated
λ€λ₯Έ μΈμ΄λ₯Ό μ¬μ©νλ μ¬λλ€μκ²λ Nestμμ κ±°μ λͺ¨λ κ²μ΄ λ€μ΄μ€λ μμ²μμ 곡μ λλ κ²μ΄ μ΄μν μ μμ΅λλ€. μ°λ¦¬λ λ°μ΄ν°λ² μ΄μ€μ λν μ°κ²° ν, μ μ μνλ±μ μ±κΈ ν€ μλΉμ€λ₯Ό κ°μ§κ³ μμ΅λλ€. μΌλ°μ μΌλ‘ Node.jsλ λͺ¨λ μμ²μ΄ λ³λμ μ€λ λμ μν΄ μ²λ¦¬λλ μμ²/μλ΅ λ€μ€ μ€λ λ μν λΉ μ μ₯ λͺ¨λΈμ λ°λ₯΄μ§ μμ΅λλ€. λ°λΌμ μ±κΈ ν€ μΈμ€ν΄μ€λ₯Ό μ¬μ©νλ κ²μ μ ν리μΌμ΄μ μ μμ ν©λλ€.
κ·Έλ¬λ 컨νΈλ‘€λ¬μ μμ² κΈ°λ° μλͺ μ΄ μλμ μΈ λμ (μ: GraphQL μ ν리μΌμ΄μ μ μμ²λ³ μΊμ, μμ² μΆμ λλ λ€μ€ ν λμ) μΌ μ μλ κ²½μ°κ° μμ΅λλ€. μ΄λ»κ² μ²λ¦¬ ν μ μμ΅λκΉ?
κΈ°λ³Έμ μΌλ‘ λͺ¨λ 곡κΈμλ μ±κΈ ν€μΌλ‘ μλνκ³ μμ² λ²μλ₯Ό μ€μ νλ©° μμ λͺ¨λλ‘ μ ν ν μ μμ΅λλ€. μ°¨μ΄μ μ μ΄ν΄νλ €λ©΄ λ€μ νλ₯Ό μ°Έμ‘°νμμμ€.
info ννΈ μ±κΈ ν€ μ€μ½νλ₯Ό μ¬μ©νλ κ²μ΄ νμ κΆμ₯λλ λ°©λ²μ λλ€. μμ²κ°μ 곡κΈμλ₯Ό 곡μ νλ©΄ λ©λͺ¨λ¦¬ μλΉκ° μ€μ΄λ€μ΄ μ ν리μΌμ΄μ μ±λ₯μ΄ ν₯μλ©λλ€ (λ§€λ² ν΄λμ€λ₯Ό μΈμ€ν΄μ€ννμ§ μμλ λ¨).
λ€λ₯Έ μ£Όμ
λ²μλ‘ μ ννλ €λ©΄@Injectable()
λ°μ½λ μ΄ν°μ μΈμλ₯Ό μ λ¬ν΄μΌ ν©λλ€.
custom providerμ κ²½μ° μΆκ°scope
μμ±μ μ€μ ν΄μΌν©λλ€.
컨νΈλ‘€λ¬μ κ΄ν΄μλ ControllerOptions
κ°μ²΄λ₯Ό μ λ¬νμμμ€ :
warning μλ¦Ό κ²μ΄νΈμ¨μ΄λ λ¨μΌ λ²μ μν μ νλ―λ‘ μμ² λ²μ 곡κΈμμ μμ‘΄ν΄μλ μλ©λλ€. νλμ κ²μ΄νΈμ¨μ΄λ λ΄λΆμ μ€μ μμΌμ μΊ‘μννλ©° μ¬λ¬λ² μΈμ€ν΄μ€ν ν μ μμ΅λλ€.
μμ² λ²μμ 곡κΈμλ λ§€μ° μ μ€νκ² μ¬μ©ν΄μΌν©λλ€. μ€μ½νλ μΈμ μ 체μΈμμ μ€μ λ‘ λ²λΈλ§λ¨μ λͺ μ¬νμμμ€. 컨νΈλ‘€λ¬κ° μμ² λ²μμ 곡κΈμμ μμ‘΄νλ κ²½μ° μ»¨νΈλ‘€λ¬λ μ€μ λ‘ μμ² λ²μμ λλ€.
CatsController<-CatsService<-CatsRepository
체μΈμ μμν΄ λ³΄μμμ€. CatsService
κ° μμ² λ²μ (λ° λλ¨Έμ§λ μ΄λ‘ μ μΌλ‘ μ±κΈ ν€) μΈ κ²½μ°, CatsController
λ μμ² λ²μκ° λ©λλ€ (μμ² λ²μκ° μ§μ λ μΈμ€ν΄μ€λ μλ‘ μμ±λ 컨νΈλ‘€λ¬μ μ½μ
λμ΄μΌνκΈ° λλ¬Έμ). λ°λ©΄μ CatsRepository
λ μ±κΈ ν€μΌλ‘ λ¨μ μμ κ²μ
λλ€.
κ²½κ³ μ΄ κ²½μ° μν μ’ μμ±μ λ§€μ° κ³ ν΅μ€λ¬μ΄ λΆμμ©μΌλ‘ μ΄μ΄μ§ μ μμΌλ―λ‘ λΆμμ©μ μΌμΌν€μ§ μμμΌ ν©λλ€.
HTTP μ ν리μΌμ΄μ μμ μμ² λ²μ μ 곡μλ₯Ό μ¬μ©νλ©΄ μλ μμ² μ°Έμ‘°λ₯Ό μ½μ ν μ μμ΅λλ€.
κ·Έλ¬λ μ΄ κΈ°λ₯μ λ§μ΄ν¬λ‘ μλΉμ€ λλ GraphQL μμ© νλ‘κ·Έλ¨μμλ μλνμ§ μμ΅λλ€. GraphQL μ ν리μΌμ΄μ
μμ λμ CONTEXT
λ₯Ό μ½μ
ν μ μμ΅λλ€.
κ·Έλ° λ€μ context
κ° (GraphQLModule
)μ ꡬμ±νμ¬ request
λ₯Ό νΉμ±μΌλ‘ ν¬ν¨ν μ μμ΅λλ€.
μμ² λ²μ 곡κΈμλ₯Ό μ¬μ©νλ©΄ λΆλͺ ν μμ© νλ‘κ·Έλ¨ μ±λ₯μ μν₯μ λ―ΈμΉ©λλ€. Nestκ° κ°λ₯ν ν λ§μ λ©ν λ°μ΄ν°λ₯Ό μΊμνλ €κ³ μλνλλΌλ κ° μμ²λ§λ€ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μμ±ν΄μΌ ν©λλ€. λ°λΌμ νκ· μλ΅ μκ°κ³Ό μ λ°μ μΈ λ²€μΉλ§νΉ κ²°κ³Όκ° λλ €μ§λλ€. 곡κΈμκ° λ°λμ μμ² λ²μλ₯Ό μ§μ ν νμκ° μλ€λ©΄ μ±κΈ ν€ λ²μλ₯Ό κ³ μν΄μΌν©λλ€.
SINGLETON
κ° κ³΅κΈμλ μ¬λ¬ ν΄λμ€μμ 곡μ ν μ μμ΅λλ€. 곡κΈμ μλͺ μ μμ© νλ‘κ·Έλ¨ μλͺ μ£ΌκΈ°μ λ°μ ν κ΄λ ¨μ΄ μμ΅λλ€. μμ© νλ‘κ·Έλ¨μ΄ λΆνΈ μ€νΈλ©λλ©΄ λͺ¨λ 곡κΈμκ° μ΄λ―Έ μΈμ€ν΄μ€νλ©λλ€. μ±κΈ ν€ λ²μκ° κΈ°λ³Έμ μΌλ‘ μ¬μ©λ©λλ€.
REQUEST
μμ² μ²λ¦¬κ° μλ£λ ν μμ λλ λͺ¨λ μμ²λ° κ°λΉμ§μ λν΄ μ 곡μμ μ μΈμ€ν΄μ€κ° λ μ μ μΌλ‘ μμ±λ©λλ€.
TRANSIENT
μΌμμ μΈ μ 곡μλ μ 곡μκ°μ 곡μ ν μ μμ΅λλ€. λ€λ₯Έ 곡κΈμκ° Nest 컨ν μ΄λμ νΉμ μμ 곡κΈμλ₯Ό μμ²ν λλ§λ€ 컨ν μ΄λλ μλ‘μ΄ μ μ© μΈμ€ν΄μ€λ₯Ό λ§λλλ€.