【SpringBoot】AutoConfigureから除外する方法

@Autowiredアノテーション

こんにちは東です。
今回は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」を見れば、他のインポート対象が確認できるかと思いますので、実際何がスキャンされてるのか?等気になる方は一度見てみるといいかもしれません。

コメント

タイトルとURLをコピーしました