2015-11-20 62 views
0

我有一個配置文件,我想根據配置文件創建不同的bean。Spring註釋@Profile不允許用於這個位置

出於某種原因,這是工作:

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

這不,在Eclipse中給人錯誤消息:

The annotation @Profile is disallowed for this location

@Bean 
@Profile("myProfile") 

我寧願用第二個,但我不確定我是否可以。春天API表示,它應該工作:

The @Profile annotation may be used in any of the following ways:

  • as a type-level annotation on any class directly or indirectly annotated with @Component , including @Configuration classes
  • as a meta-annotation, for the purpose of composing custom stereotype annotations
  • as a method-level annotation on any @Bean method

我使用自旋微觀框架3.1.0,是有可能,在@Bean方法使用後,纔出臺?

+0

您試圖運行哪些代碼?你可以分享的任何例外?什麼不工作? – aviad

+0

我想使用這個bean配置來運行JUnit測試。當我運行測試時,我收到以下消息: java.lang.Error:未解決的編譯問題: \t該位置不允許註釋@Profile – user2595581

回答

5

是的,它在春季4

  • @Profile引入版本3.2.9.RELEASE只允許被放置在一個類型此註釋。

    @Target(value=TYPE)

  • @Profile in version 4.0.0.RELEASE允許將此註釋放置在類型和方法上。

    @Target(value={TYPE,METHOD})

3

Spring 3.x輪廓註釋被限制在一個類型。由於Spring 4您也可以在方法上使用@Profile

您需要將您的Spring版本更新到至少4版本。

+0

不能這樣做,我更喜歡爲每個配置文件創建不同的類I想要 – user2595581

+0

是的。這是一個有效的選擇。 –

相關問題