@Injectable装饰器在Spring中基本上是@Component或@Autowired的2等效角度吗?

时间:2017-08-13 23:37:54

标签: javascript angularjs spring frontend angular-fullstack

@Injectable是否意味着

  

“允许将无论注入装饰器所在的类”

  

这是否意味着“允许我将这个类(装饰器在上面)注入应用程序中的” “?

1 个答案:

答案 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容器提供或注入特定的类成员。

有关详细信息,请参阅以下链接:

Angular Dependency Injection

@Autowired Spring Documentation

@Component Spring Documentation