如何使用@IfProfileValue测试配置文件是否处于活动状态?

如何使用@IfProfileValue测试配置文件是否处于活动状态?,第1张

如何使用@IfProfileValue测试配置文件是否处于活动状态

因此

@IfProfilevalue
,与
@Profile
或 无关
@ActiveProfiles

…我假设您已经看过,因为您昨天评论了我的答案。

其原因

@IfProfilevalue
有没有关系
@Profile
或者
@ActiveProfiles
是由于架构的演变。有关更多详细信息,请参见下文。

@Profile
测试以查看配置文件是否处于活动状态,
@ActiveProfiles
将其设置为活动状态,并
@IfProfilevalue
允许您检查Spring中的内容
Environment

这些陈述并不完全正确,尤其是最后一部分。

@Profile
如果有一个指定的 bean定义配置文件
在Spring中对于处于活动状态,则用来用于有选择地启用组件(例如
@Service
等),
@Configuration
类或
@Bean
方法。这个注解不直接相关测试:应该
不是 被一个测试类使用。
Environment``ApplicationContext``@Profile

@ActiveProfiles
用于指定在加载用于集成测试的 Bean定义配置文件 (例如,通过声明的
Bean
@Profile
)应该处于活动状态
ApplicationContext

@IfProfilevalue
没有
允许你检查的事在春节
Environment
。我不确定您为什么要这样做,因为Spring框架中的任何文档都没有说明这一点。正如我在上述线程中所述:

请注意,它

@IfProfilevalue
是在Spring framework 2.0中引入的,
于bean定义配置文件的概念,并且
@ActiveProfiles
是在Spring framework 3.1中首次引入的。

在上述线程中,我还指出了以下几点:

考虑到的语义时,“配置文件”一词可能会引起误解

@IfProfilevalue
。关键是要考虑“测试组”(如TestNG中的那些)而不是“配置文件”。请参阅JavaDoc中@IfProfilevalue的示例。

如何使用

@IfProfilevalue
检测我的个人资料是否处于活动状态?

这取决于,并且…我假设您所说的“ profile” 是指 bean定义配置 文件。

如果

@ActiveProfiles
用于设置测试的 Bean定义配置文件 ,则当前不能
@IfProfilevalue
用来确定
Bean定义配置文件 是否处于活动状态,因为通过配置的
Bean定义配置文件
@ActiveProfiles
是直接在测试中设置的,
ApplicationContext
而不是作为Java系统属性设置的。

但是,如果你设置 的bean定义配置文件 只能 通过

spring.profiles.active
系统属性,那么
可以使用
@IfProfilevalue
,以确定是否一个 bean定义配置文件
是积极的,因为
@IfProfilevalue
事实上作品与系统性能。例如,您可以使用以下代码:

@IfProfilevalue(name = "spring.profiles.active", value = "test")

我试过了,

@IfProfilevalue(name = "activeProfiles", value ="test")
但是似乎跳过了测试,这意味着它不匹配。

activeProfiles
是不正确的,因为属性名称不正确。正确的系统属性名称是
spring.profiles.active
。有关
AbstractEnvironment.ACTIVE_PROFILES_PROPERTY_NAME
详细信息,请参见。


@IfProfilevalue
不协调的事实
@ActiveProfiles
是Spring团队的已知问题。请咨询以下JIRA问题以获取更多详细信息,并根据需要加入讨论。

  • https://jira.spring.io/browse/SPR-7754
  • https://jira.spring.io/browse/SPR-8982
  • https://jira.spring.io/browse/SPR-11677

希望这可以为您澄清情况!

Sam( Spring TestContext framework的作者



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5616051.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存