UNPKG

objbox

Version:

基于typescript装饰器的轻量级IOC容器

106 lines (85 loc) 1.93 kB
import { AutowireMethod, AutowireProperty, Bean, BeanComponent, Component, ComponentCreatedType,TemplateHandler } from '../..'; import { ComponentScan } from '../ComponentScanDemo/ComponentScan.annotation'; // @Component() // export class DefaultComponent implements TemplateHandler{ // created(){ // console.log("DefaultComponent-created") // }; // completed(){ // console.log("DefaultComponent-completed") // }; // ready(){ // console.log("DefaultComponent-ready") // }; // } @Component("A") export class A{ } @Component() export class B{ } @BeanComponent() export class MyBeanComponent{ @Bean("C",ComponentCreatedType.Singleton) createC(){ return { msg:"this is C" } } } @Component() export class Main implements TemplateHandler{ @AutowireProperty("A") a:A b:B @AutowireMethod("B") setB(b:B){ this.b = b; } @AutowireProperty("C") c:any ready(){ // console.log(this.a,this.b,this.c) } } @Component() export class R1{ @AutowireProperty("R2",false) r2:R2 } @Component("R2") export class R2{ @AutowireProperty("R1") r1:R1 } @Component() export class TClass1{ @AutowireProperty("TClass2") tClass2:TClass2 @AutowireProperty("TClass3") tClass3:TClass3 } @Component() export class TClass2{ @AutowireProperty(TClass1) tClass1:TClass1 @AutowireProperty("TClass3") tClass3:TClass3 } @Component() export class TClass3{ @AutowireProperty(TClass2) tClass2:TClass2 @AutowireProperty(TClass1) tClass1:TClass1 } //从外部扫描 @ComponentScan(__dirname+"/../extra") @Component() export class ComponentScanTest{ @AutowireProperty("Wow") wow:any ready(){ console.log(this.wow) } }