2016-12-09 106 views
0

我嘗試使用@Bean(value="")屬性嘗試創建Bean及其名稱。 value應該設置爲Spring EL Expression使用@Bean註釋和Spring EL表達式創建Bean和名稱

@Configuration 
public class TestClass{ 

    @Autowired 
    TestProperty testProperty 

    @Bean(value="#{testProperty.name}") 
    public MyBean myBean(){ 
     MyBean b = new MyBean(); 
     return b; 
    } 
} 

testProperty是正確的注入,並持有例如testProperty.name = "Bean1"

值目前我創建的Bean只是有EL表達式作爲其名稱:{"bean":"#{testProperty.name}"

我怎能捨棄MyBean其姓名來自testProperty.name

+0

我真的懷疑你可以使用SpEL或bean的名字。你能詳細說明你的用例嗎? – luboskrnac

+0

@luboskrnac我的用例是我必須在屬性文件中創建外部配置的石英作業。所以它可以是一個或多個工作。有關於這個問題從我這裏[另一個開放的問題](http://stackoverflow.com/questions/41022276/how-to-create-spring-beans-in-a-dynamical-way-using-quartz-schedulerfactorybean)。也許這可以給你的上下文。 – Patrick

+0

我已經回覆了關於此問題的非常類似的問題:http://stackoverflow.com/questions/40929161/spring-boot-one-scheduled-task-using-multiple-cron-expressions-from-yaml-file/40930043 #40930043 – dimitrisli

回答

1

您可以使用屬性值@Scheduled標註的cron屬性:

@Scheduled(cron = "${testProperty.name}") 

所以沒有必要在規劃環境地政司所有。