2016-04-20 81 views

回答

0

看來,如果你定義屬性「spring.datasource.initialize」爲假,則初始化邏輯將被跳過。

如果你看一下DataSourceAutoConfiguration定義,它加載的配置屬性...

enter image description here

這DataSourceProperties有一個名爲「初始化」的屬性,它似乎這是在DataSourceInitializer默認實現引用...

enter image description here

我讀爲能夠使用一個屬性來跳過數據源的初始化。

希望這有助於

0

如何與註解@ConditionalOnProperty延伸DataSourceAutoConfiguration?您可以從彈出窗口排除原始的DataSourceAutoConfiguration,並將您自己的實現作爲應用程序的一部分。比如,

@Configuration 
@ConditiaonalOnProperty(value = "datasource.property.anything",matccchIfMissing==true) 
public class DataSourceInit extends DataSourceAutoConfiguartion { 
} 

在Spring應用程序類添加exclude爲:

@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class}) 
+0

嗨雙子座,謝謝。當datasource.property.anything設置爲true時,能夠成功地獲得應用程序...但是當它關​​閉(設置爲false)時,加載HibernateJpaAutoConfiguration類時會失敗。我回來並添加@EnableAutoConfiguration(排除= {DataSourceAutoConfiguration.class,HibernateJpaAutoConfiguration.class})。現在它在設置爲false時工作,但在設置爲true時失敗。 –

+0

當你不想啓用'DataSourceAutoConfiguration'時,可以肯定的是,如果你排除所有這些都沒有問題。如果你的'datasource.property.anything'設置爲false,那麼失敗會是什麼?根據我的經驗,「@ ConditionalOnProperty」將決定是否應該加載類「HibernateJpaAutoConfiguration」。否則,請你將你的項目發佈到github上,或者只是郵寄給我?我想對此做更多的研究。如果我已經實現了,我會發布任何有用的信息。 –

0

您可以使用spring.autoconfigure.exclude財產排除自動配置。你可以使用系統屬性設置該屬性:

-Dspring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration 

你也可以使用SPRING_AUTOCONFIGURE_EXCLUDE環境變量設置。