对象 id

在默认情况下,injection 会将类名变为 驼峰 形式作为对象 id,这样你可以通过容器获取实例。

  1. container.getAsync('userService'); // 根据字符串 id 获取实例
  2. container.getAsync(UserService); // 传入类名,自动根据类目获取实例

而默认情况下,Midway 的依赖注入使用的是 byName ,只要同名,就会自动进行注入。

而在某些场景下,用户希望注入不同的实例,这个时候可以对默认生成的 id 进行修改。

  1. @provide('uModel')
  2. export class UserModel {
  3. }
  4. @provide('user')
  5. export class UserService {
  6. @inject('uModel')
  7. userModel;
  8. async getUser(userId) {
  9. return await this.userModel.get(userId);
  10. }
  11. }
  12. // 使用修改之后的 id 获取对象
  13. const userService = await container.getAsync('user');

同理,在使用 @inject 的时候也可以使用不同的 id。