2016-09-29 4 views
0

Aurelia에서 Spring을 사용했을 때와 비슷한 환경 설정 클래스를 만드는 방법을 알아 내려고하고 있습니다. 유스 케이스는 기본적으로 자신의 구성 (연결 생성, 종속성 등록 ... 등)을 관리하기위한 지속성과 같은 기능을 제공하는 모듈을 사용했습니다. 봄Aurelia DI 환경 설정 클래스 @configuration

,이 같은 것을 할 수 있습니다 (의사 코드를 테스트되지 않았습니다) :

@Configuration 
class Config { 
    @Bean 
    public Connection createConnection(string cnt) { 
     // TODO: create connection 
    } 
} 

위의 코드가 통과 또한 createConnection 방법을 실행하고 용기와의 연결을 등록하고 것 메서드 호출시 cnt 연결 문자열 변수.

class App { 
    constructor(dependencies: Dependencies) { 
     dependencies.configure(this.container, this.cnt); 
    } 
} 

이 방법의 문제는, 그 구성이 명시하게하고, 그래서 같이 다른이 곳을

export class Dependencies { 
    public configure(container: Container): void { 
     let cnt: string = container.get('cnt'); 
     container.registerSingleton(Connection,() => { 
      // TODO: create connection 
     }) 
    } 
} 

그리고 전화 :

나는 내가 다음과 같은 일을 할 수 있다고 생각 연결을 생성하기 전에 연결 문자열을 등록해야하기 때문에 구성 클래스의 이름, 호출 할 메서드 및 호출시기를 알아야합니다.

IMHO는 명확한 구성 단계가있어 밀접하게 결합되지 않습니다. 또한 팩토리 메서드를 사용하여 종속성을 제공하는 방법을 사용하면 구성을보다 쉽고보다 인간 공학적으로 만들 수 있습니다.

요약

, 내 두 가지 질문은 다음과 같습니다

  1. @singleton 또는 @transient 같은 명시 적으로 구성 @configuration 단계를 가질 수 있습니까?
  2. 어떻게하면 데코레이터를 사용하여 팩토리 메서드/함수를 통해 종속성을 등록 할 수 있습니까?

답변

0

이 유스 케이스는 aurelia-dependency-injection 모듈에서 지원하지 않지만 이제는 지원을 추가하는 모듈이 있습니다 (aurelia-factory-methods).