閱讀1015 返回首頁    go 阿裏雲 go 技術社區[雲棲]


《Spring Boot官方文檔》16. 自動配置

16. 自動配置

Spring Boot的自動配置會嚐試根據你添加進來的jar依賴來自動配置你的Spring應用。例如,如果HSQLDB在你的classpath路徑上,你沒有手動配置任何數據庫連接實體類,我們還會自動配置內存數據庫。

你可以有選擇的實現自動配置,可以向 @Configuration上添加@EnableAutoConfiguration或者@SpringBootApplication注解來實現。

你應該隻添加一個@EnableAutoConfiguration注解。我們通常建議你把它添加到你的主要 @Configuration類上。

16.1 逐步覆蓋自動配置

自動配置是非入侵式的,任何時候你都可以使用你自定義的配置來覆蓋自動配置的特定部分。例如,如果你要添加自己的DataSource bean,默認的內嵌數據庫會無效。

如果你需要查找當前應用的自動配置,你可以啟動應用時加上–debug開關。它會為核心日誌記錄器開啟debug日誌記錄,並且會打印自動配置日誌信息到控製台。

16.2禁用特定自動配置

如果你發現正在應用的特定自動配置不是你想要的,你可以使用@EnableAutoConfiguration的排除屬性來禁用它們。

import org.springframework.boot.autoconfigure.*;
import org.springframework.boot.autoconfigure.jdbc.*;
import org.springframework.context.annotation.*;
@Configuration
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) public class MyConfiguration {
}

如果這個類不在classpath路徑下,你可以使用該注解的excludeName屬性以及指定全限定名 來替代。最終,你也可以控製自動配置類的列表來額除spring.autoconfigure.exclude屬性。

你可以通過注解級別以及使用屬性來定義排除項。

17. Spring Beans和依賴注入

你可以自由使用任何標準Spring框架技術來定義你的beas以及它們的依賴。簡單來說,我們通常使用@ComponentScan 來發現你的beans,並且配合@Autowired構造器來更好的注入。

如果你在構造代碼時使用上麵建議的方式(在根包下定位你的應用類),你可以用@ComponentScan注解,無需任何參數。你所有的應用組件(@Component, @Service, @Repository, @Controller 等等)都會作為Spring Beans來注冊。

下麵的例子是使用@Service Bean構造器注入用於獲取必要的RiskAssessor Bean。

package com.example.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service public class DatabaseAccountService implements AccountService {

private final RiskAssessor riskAssessor;

@Autowired public DatabaseAccountService(RiskAssessor riskAssessor) {

this.riskAssessor = riskAssessor;

}

// …

}

請注意使用構造器注入允許使用final標記riskAssessor 對象,表明以後該對象不能被改變。

轉載自 並發編程網 - ifeve.com

最後更新:2017-05-19 10:25:05

  上一篇:go  《OSGI官方指南》首頁
  下一篇:go  《kafka中文手冊》-快速開始(三)