Spring注释@Profile不允许此位置

时间:2015-11-20 08:59:36

标签: java spring annotations

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

出于某种原因,这是有效的:

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

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

  

此地点不允许使用注释@Profile

@Bean
@Profile("myProfile")

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

  

@Profile注释可以通过以下任何方式使用:

     
      
  • 直接或间接作为任何类的类型级注释   使用@Component进行注释,包括@Configuration
  •   
  • 作为一个   元注释,用于组成自定义构造型   注释
  •   
  • 作为任何@Bean方法的方法级注释
  •   

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

2 个答案:

答案 0 :(得分:5)

是的,它是在春季推出的。

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

    @Target(值= TYPE)

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

    @Target(值= {TYPE,METHOD})

答案 1 :(得分:3)

Spring 3.x个人资料中,注释仅限于某种类型。自Spring 4起,您也可以在方法上使用@Profile

您需要将Spring版本更新到至少版本4.