こんにちは東です。
今回はSpringBootを使ったMock等を作成するにあたって、AutoConfigureで不要なConfigurationClassを利用しないように設定します。
やり方
方法は簡単で、@SpringBootApplicationに省きたいConfigurationClassを指定するだけです。
DB周りのClassを省くように指定してみます。
@SpringBootApplication(
exclude = {
MongoAutoConfiguration.class,
RedisAutoConfiguration.class,
DataSourceAutoConfiguration.class,
DataSourceTransactionManagerAutoConfiguration.class,
HibernateJpaAutoConfiguration.class,
XADataSourceAutoConfiguration.class
})
public class HogeApplication {
/**
* starter method.
*
* @param args parameter
*/
public static void main(final String[] args) {
SpringApplication.run(HogeApplication.class, args);
}
}
上記のように、「exclude」に対して省きたいクラスを渡せばOKです。
このように指定することで、AutoConfigureのスキャン対象から外されることになります。
他の対象が知りたい
アノテーション「SpringBootApplication」を追っていくと、SpringFactoriesLoader.classに定義されている「FACTORIES_RESOURCE_LOCATION」に、スキャン対象「META-INF/spring.factories」が記されている事がわかります。
- SpringFactoriesLoader.class(一部抜粋)
public final class SpringFactoriesLoader {
/**
* The location to look for factories.
*
Can be present in multiple JAR files.
*/
public static final String FACTORIES_RESOURCE_LOCATION = "META-INF/spring.factories"; // ← ここ
private static final Log logger = LogFactory.getLog(SpringFactoriesLoader.class);
private static final Map<ClassLoader, MultiValueMap> cache = new ConcurrentReferenceHashMap();
「spring-boot-autoconfigure.jar」の「META-INF/spring.factories」を見れば、他のインポート対象が確認できるかと思いますので、実際何がスキャンされてるのか?等気になる方は一度見てみるといいかもしれません。
元々Javaエンジニアからはじまり、気付けばJS(ES6)、AWS、Python3.6、OutsystemsPlatform、PHPと色々やってました。
得意技: Java、JS(ES6)、AWSの一部リソース
勉強中: AWSの各種リソースと、Python3.6
MarkDownからASCiiDocへ目覚めつつある今日この頃。
座右の銘は「一言芳恩」「華麗奔放」「不決断こそ最大の害悪である」です。
コメント