最近在看SpringBoot相关的视频,看到别人自定义starter写的那么6,自己也有些手痒,就琢磨着自己写个。最近一直在用MongoDB的操作工具类Jongo,虽然这个spring也有自己的操作工具类,但是架不住习惯啊。就是习惯了用Jongo。废话不多说。 在写自定义starter之前,我们首先要了解下SpringBoot是如何加载starter的。
最开始肯定是那个我们最熟悉的注解:@SpringBootApplication。 进入实现发现了个这个注解:@EnableAutoConfiguration 至于为啥要找这个注解,我的理由就是代码看多了,直觉吧,(其实是看了视频讲解)。 然后点进去找到这么个东西 @Import({AutoConfigurationImportSelector.class}) 这个看着就像是自动加载配置的选择器了吧。 然后进入这个类 搜索下“spring.factories”关键词。会找到这么个东西:
protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) { List<String> configurations = SpringFactoriesLoader.loadFactoryNames(this.getSpringFactoriesLoaderFactoryClass(), this.getBeanClassLoader()); Assert.notEmpty(configurations, "No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct."); return configurations; }就是上面这个方法,断言了这么句话:“No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct.” 大致意思就是说我们的有这么个东西才能自动引入我们的自定义配置的configuration。 具体里面要写什么内容呢,我们可以找个springboot封装好的starter去看一下。 这个只是一方面,还有一些别的这里就不一一的去找了。
其实我们完全可以去找一个SpringBoot封装好的starter去照着写一下,这里说这些源码其实是想说,像我这样的小白提升自己能力的主要一方面还是要多看一些优秀的源码,多学习下他们好的编程习惯,多总结一下思想,这样提升的会快些。
自定义starter还是在下一篇写吧。。。。。。