https://mp.weixin.qq.com/s/gs2zLSH6m9ijO0-pP2sr9Q
@EnableAutoConfiguration-》
@Import({AutoConfigurationImportSelector.class})-》
SpringFactoriesLoader.
loadFactoryNames()->META-INF/spring.factories->加载文件下类路径的类,能否在加载成功,就看这个类上@ConditionalOnClass等了
public static List<String> loadFactoryNames(Class<?> factoryClass, ClassLoader classLoader) { String factoryClassName = factoryClass.getName(); try { Enumeration<URL> urls = classLoader != null ? classLoader.getResources("META-INF/spring.factories") : ClassLoader.getSystemResources("META-INF/spring.factories"); ArrayList result = new ArrayList();
Mybatis自动装配的那个核心文件下配置文件
# Auto Configure org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration
根据配置文件找到对应的类进行加载
对应的类
@Configuration @ConditionalOnClass({SqlSessionFactory.class, SqlSessionFactoryBean.class}) @ConditionalOnBean({DataSource.class}) @EnableConfigurationProperties({MybatisProperties.class}) @AutoConfigureAfter({DataSourceAutoConfiguration.class}) public class MybatisAutoConfiguration { private static final Logger logger = LoggerFactory.getLogger(MybatisAutoConfiguration.class); private final MybatisProperties properties;