相当于Spring中CDI的@Inject @Active

Equivalent to @Inject @Active of CDI in Spring

使用 CDI,您可以执行以下操作:

@Inject @Active
UserFactory userFactory;

代码的意思是:我想要一个 returns 只有活跃用户的 userFactory。

Spring的等价方式是什么?我做了我的研究,但我找到的最近的是 Spring 个人资料。看起来像:

@Autowired @Profiles("active")
UserFactory userFactory;

问题是只能同时激活一个配置文件,对吗?如果是这样,它在我看来更像是 CDI 中的@Alternative,它并没有解决我提到的问题。

Spring 也可以使用限定符(用 @Qualifier 定义)。可能 @Active 已经是 @Qualifier,因此可用于确定使用哪一个。

@Component
@Active
public ActiveUserFactory implements UserFactory { ... }

然后在你想使用这个的地方再次添加@Active限定符。

@Autowired
@Active
private UserFactory userFactory;

如果您不想创建注释,您也可以使用普通的 @Qualifer("active")

如需更详尽的解释,您可能需要查看 the reference guide