我引入spring-boot-starter-web后会引入spring-boot-autoconfigure的jar包。Spring是扫描工程下所有jar包下的META-INF下的spring.factories文件中的内容然后将自动配置类加入容器中,那么是否会将所有的自动配置类加入容器中,如果是这样是不是会很浪费,如果不是选择加载的地方在哪。萌新求大佬解释。
回答
你可以选择把你不想自动配置的类排除掉, 通过注解或配置属性
@Configuration
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class MyConfiguration {
}
或是通过配置文件中的spring.autoconfigure.exclude属性把不想加载的配置类排除掉.
嗯,谢谢大神回答。这个排除的方法我学到了。我还是有点疑惑的是,任意一个的starter都会引入spring-boot-autoconfigure所有的自动配置类,并加载到spring容器中吗,如:只引入了web的starter的也会将spring-boot-autoconfigure下的SpringCloud的自动配置类加载进入是吗,我这么理解对吗,还是SpringBoot在加载这些配置的类的时候会自己判断,没有SpringCloud的starter,就不加载SpringCloud的自动配置到Spring的容器中。