个人学习Spring @Enable 模块驱动(二.接口编程实现)笔记
在上一篇中我们学习了,怎么使用注解来实现@Enable模块驱动,这篇我们讲解下怎么使用接口编程实现这一功能。同样的还是去找一个Spring自己的实现作为一个参考,比如说@EnableCache
从@EnableCaching中可以看出在Import中import了一个叫CachingConfigurationSelector的类,我们进一步去看看这个类
我们可以看到这个类又继承了
在AdviceModeImportSelector中我们看到了他实现了ImportSelector接口
我们再进一步看其实这个接口就一个定义了一个方法
所以一般在他的实现类中能找到这个方法的实现
所以我们也可以参照种实现来自己实现一个简易版的。
首先我们定义要注入的bean
我们自己定义一个类并且实现ImportSelector 并重写其方法
或许有人就要问了为什么返回这个类名就可以获取到里面的注入的bean了呢?
从这个我们就可以看到使用了Spring自己的实现的去解析class文件的一些方法,有兴趣的小伙伴可以去详细读下。
这儿就是根据名class名字然后拿到一个classSource
这就是将class转换为SourceClass的地方,有兴趣的大家可以去读下。
最后他会将处理完的这些东西放入到configurationClass里,这是一个LinkedHashMap
回到主线我们继续实现我们的,接着我们定义一个注解类@EnableHelloWorld
现在我们就可以构建测试代码了
我们可以看到如我们预期的那样,实现了其功能
写的不对或者不好的地方,请大佬指教,谢谢
本文参考:springboot 编程思想(核心篇)