繁体   English   中英

春季注释@Profile不适用于此位置

[英]Spring annotation @Profile disallowed for this location

我有一个配置文件,我想根据配置文件创建不同的bean。

由于某种原因,这是可行的:

@Configuration
@Profile("myProfile")
public class myClass {

这不是,在Eclipse中给出错误消息:

该位置不允许使用@Profile注释

@Bean
@Profile("myProfile")

我宁愿使用第二个,但是我不确定是否可以。 Spring API说它应该工作:

@Profile批注可以通过以下任何一种方式使用:

  • 作为任何直接或间接用@Component注释的类的类型级别注释,包括@Configuration
  • 作为元注释,目的是组成自定义构造型注释
  • 作为任何@Bean方法上的方法级注释

我正在使用Sping Framework 3.1.0,是否有可能仅在之后引入@Bean方法使用?

是的,它是在春季4中引入的。

  • 版本3.2.9.RELEASE中的@Profile仅允许将此注释放置在类型上。

    @Target(值= TYPE)

  • 4.0.0.RELEASE版本中的@Profile允许将此注释放置在类型和方法上。

    @Target(值= {TYPE,METHOD})

Spring 3.x中,配置文件注释被限制为一种类型。 Spring 4开始,您也可以在方法上使用@Profile

您需要将您的Spring版本至少更新为版本4。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM