#javascript #node.js #typescript #dependency-injection
#javascript #node.js #typescript #внедрение зависимостей
Вопрос:
Этот класс ABCService выполняет некоторую инициализацию при запуске службы
class ABCService {
public init() : void {
some stuff...
}
export const service = new ABCService();
Я использую этот класс в качестве загрузчика
import { MicroframeworkLoader, MicroframeworkSettings } from 'microframework-w3tec';
import { service } from '../ABCService';
export const serviceLoader: MicroframeworkLoader = (settings: MicroframeworkSettings | undefined) => {
service.init();
};
Я использую этот загрузчик ServiceLoader в загрузчиках bootstrapMicroframework файла APP.ts.
bootstrapMicroframework({
loaders: [
serviceLoader
],
}).then(() => ... )
.catch(error => log.error('Application is crashed: ' error));
Теперь у меня есть другой класс обслуживания, аннотированный с помощью @Service
@Service()
export public class XYZService {
constructor(private userRepository: UserRepository, private dependency2: Dependency2){
}
public doSomeThing(): Promise<any> {
....
....
}
}
Я хочу внедрить этот класс XYZService в ABCService, чтобы все зависимости в XYZService вводились контейнером. Как я могу этого добиться?
Ответ №1:
Я узнал, что можно получить экземпляр класса обслуживания в несервисных классах, используя typedi
Container.get<ServiceClassType>(ServiceClassType);