对象 id
在默认情况下,injection 会将类名变为 驼峰
形式作为对象 id,这样你可以通过容器获取实例。
container.getAsync('userService'); // 根据字符串 id 获取实例
container.getAsync(UserService); // 传入类名,自动根据类目获取实例
而默认情况下,Midway 的依赖注入使用的是 byName
,只要同名,就会自动进行注入。
而在某些场景下,用户希望注入不同的实例,这个时候可以对默认生成的 id 进行修改。
@provide('uModel')
export class UserModel {
}
@provide('user')
export class UserService {
@inject('uModel')
userModel;
async getUser(userId) {
return await this.userModel.get(userId);
}
}
// 使用修改之后的 id 获取对象
const userService = await container.getAsync('user');
同理,在使用 @inject
的时候也可以使用不同的 id。