【发布时间】:2017-09-01 07:48:02
【问题描述】:
使用 CDI,您可以执行以下操作:
@Inject @Active
UserFactory userFactory;
代码的意思是:我想要一个只返回活跃用户的 userFactory。
Spring的等价方式是什么?我做了我的研究,但我发现最近的是 Spring 配置文件。它看起来像:
@Autowired @Profiles("active")
UserFactory userFactory;
问题是只能同时激活一个配置文件,对吗?如果是这样,它在我看来更像是 CDI 中的 @Alternative,它并没有解决我提到的问题。
【问题讨论】:
-
也许你正在寻找@Qualifier
-
你是什么意思 userFactory 应该只返回活动用户列表?活动字段是某个数据库中的列吗?还是在java运行时存储在内存中?
-
您可以拥有任意数量的活动配置文件。但是您可能想查看
@Qualifier(我怀疑@Active也是如此)。 -
@yaswanth 是的,这就是重点。接口是工厂。当然,UserFactory 会产生用户。但是有很多种用户:活跃用户,禁用用户,等等等等。 Rest 服务不关心如何获取这些用户。其余服务也不关心应该传递哪些参数。如果我必须写 UserFactory.getFactory("active"),我会不高兴。通过使用注解,Spring 容器将为我选择实现。也许它会选择 new GetActiveUserFromDBFactory() 或 new GetActiveUserFromCache()。谁在乎?