Angularjs中的依赖注入和Spring中的区别是:spring是DI的鼻祖,依赖注入设计非常的灵活,使用起来简单方便。angular这些前端框架都在吸收后端的设计思想,像di、组件化、模块化跟后端都是殊途同归。
一、Angularjs中的依赖注入和Spring中的区别
spring是DI的鼻祖,依赖注入设计非常的灵活,使用起来简单方便。angular这些前端框架都在吸收后端的设计思想,像di、组件化、模块化跟后端都是殊途同归。
依赖注入就是不通过 new 这种方式来在类(NotificationComponent)的内部创建所依赖类(MessageService)的对象,而是在外部创建好需要依赖的类对象之后通过构造函数等方式注入进来就可以了。
而 Java 中的 Spring 框架就是这类帮助程序创建好依赖类的框架,或者也叫 IOC(Inversion of Control) 容器,Angular 也是为我们提供了这样一种容器,让我们轻松实现依赖注入。
Angular 文档中帮助我们对解析修饰符做了分类:
- 如果 Angular 找不到想要的东西怎么办:@Optional()
- 到哪里开始寻找,用@SkipSelf()
- 到哪里停止寻找,用 @Host() 和 @Self()
基本的示例:
@Injectable(
// 注释这段代码,这样在通知组件中就无法找到 MessageService
// { providedIn: ‘root’ }
)
export class MessageService {
constructor() {}
send() {
console.log(‘msg’);
}
}
延伸阅读:
二、Spring IoC有什么好处
软件只有到达了一定的复杂度才会需要各种设计原则和模式,那么依赖倒置原则(Dependency Inversion Principle )就是为了解决软件模块之间的耦合性提出的一种思想,让大型软件变的可维护,高层模块不应该依赖低层模块,两者都应该依赖其抽象,抽象不应该依赖细节,细节应该依赖抽象。那么控制反转(Inversion of Control) 就是依赖倒置原则的一种代码设计思路,具体采用的方法就是所谓的依赖注入(Dependency Injection),通过依赖注入实现控制权的反转,除了依赖注入外,还有可以通过模板方法模式实现控制反转,那么所谓依赖注入,就是把底层类作为参数传入上层类,实现上层类对下层类的“控制”。