使用CDI,您可以执行以下操作:
@Inject @Active
UserFactory userFactory;
代码意味着:我想要一个只返回活动用户的userFactory。
Spring的等效方式是什么?我做了我的研究,但我发现最接近的是Spring的个人资料。它看起来像:
@Autowired @Profiles("active")
UserFactory userFactory;
问题是只能同时激活一个配置文件,对吗?如果是这样,它看起来更像是我在CDI中的@Alternative,它并没有解决我提到的问题。
答案 0 :(得分:0)
Spring也可以使用限定符(用@Qualifier
定义)。可能@Active
已经是@Qualifier
,因此可以用来确定使用哪一个。
@Component
@Active
public ActiveUserFactory implements UserFactory { ... }
然后,在您要使用此位置的位置再次添加@Active
限定符。
@Autowired
@Active
private UserFactory userFactory;
如果您不想创建注释,您也可以使用普通@Qualifer("active")
。
如需更详细的说明,您可以查看the reference guide。