@Injectable
是否意味着
“允许将无论注入装饰器所在的类”
或
这是否意味着“允许我将这个类(装饰器在上面)注入应用程序中的” “?
答案 0 :(得分:1)
@Injectable
只是一个标记,告诉角度引擎该类可以由Injectors创建。在运行时,angular告诉Injectors读取所有@Injectable
类并实例化它们并使它们可以被注入到引用它们的类中。
例如,假设在名为UserService
的角度中存在服务,您需要在名为RegistrationComponent
的组件中使用该服务。
@Injectable()
export class UserService {
saverUser(User user)
.....
}
然后在RegistrationComponent
构造函数中声明一个引用UserService
的输入参数,它告诉角度,应该将UserService注入RegistrationComponent
,当然之前是@Injectable
标记应在UserService
RegistrationComponent.ts
export class RegistrationComponent
constructor(private userService: UserService) { }
在Spring上下文中,@Component
扮演的角色与@Injectable
相似,当然在实现中它们之间存在很多差异,但它们都扮演着类似的角色。 @Component
是一个注释,告诉Spring一些特定的类必须被认为是自动检测的候选者,并且该类可以存在于Spring容器中。生活在Spring容器中的组件(bean)可以注入其他类。
@Autowired
与@Component
不同。 @Autowired
表示应由Spring DI容器提供或注入特定的类成员。
有关详细信息,请参阅以下链接: