objbox
Version:
基于typescript装饰器的轻量级IOC容器
106 lines (85 loc) • 1.93 kB
text/typescript
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)
}
}