源码:j-spring 轻量级的IOC库.
目前基础的IOC功能和AOP功能都已经完成了,相较于java的spring优缺点还是很明显的。
it('simple test', () => {
@Component
class Calculate {
@Value({path:'n',type:Number})
n:number;
doCalculate(inputN:number){
return this.n*inputN;
}
}
@Component
class Application {
@Autowired({clazz:Calculate})
calculate:Calculate;
main(n:number){
return this.calculate.doCalculate(n);
}
}
expect(spring.loadConfig({n:2}).getBean(Application).main(2)).toBe(4)
});
缺点
- 1.无法做类型推断注入
- 2.方法参数无类型,名称必须手动注入,影响参数注解的美观性和增加不稳定性。
- 3.孤立的组件会在编译阶段treeshake掉,需要手动绑定。
- 4.同一注解只能标注在一个位置
优点
- 1.轻量级,启动极快(秒级),编译后直接运行获得组件信息,无需扫描。(java的项目越做越大,我真的写不动了,重启就快接近1分钟)
- 2.编译阶段就会通过treeshake清除掉无用的组件,所以强制开发人员要编排注入组件的顺序。我认为是个优点,提高项目的可维护性。