相当于Spring的CDI @Inject @Active

时间:2017-09-01 07:48:03

标签: java spring cdi

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

@Inject @Active
UserFactory userFactory;

代码意味着:我想要一个只返回活动用户的userFactory。

Spring的等效方式是什么?我做了我的研究,但我发现最接近的是Spring的个人资料。它看起来像:

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

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

1 个答案:

答案 0 :(得分:0)

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

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

然后,在您要使用此位置的位置再次添加@Active限定符。

@Autowired
@Active
private UserFactory userFactory;

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

如需更详细的说明,您可以查看the reference guide