Spring注释@Profile不允许此位置

tig*_*g3n 0 java spring annotations

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

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

@Configuration
@Profile("myProfile")
public class myClass {
Run Code Online (Sandbox Code Playgroud)

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

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

@Bean
@Profile("myProfile")
Run Code Online (Sandbox Code Playgroud)

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

@Profile注释可以在以下任一方式使用:

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

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

Tun*_*aki 5

是的,它是在春季4推出的.

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

    @target(值= TYPE)

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

    @target(值= {TYPE,METHOD})