把之前写的繁难RPC框架封装下

[1] 简述主动拆卸原理

在springboot的外围注解@SpringBootApplication里蕴含一个名为@EnableAutoConfiguration的注解,这是执行主动拆卸的要害

而在 @EnableAutoConfiguration 注解中理论执行主动拆卸 的是AutoConfigurationImportSelector 类

该类的getAutoConfigurationEntry办法调用getCandidateConfigurations办法扫描resource目录下META-INF/spring.factories文件返回须要被加载进IOC容器的配置类列表

总结:springboot主动拆卸是因为在启动类上存在@EnableAutoConfiguration注解,所以在启动时会扫描被援用starter的jar包下META-INF/spring.factories文件,把外面申明的主动配置类加载进IOC容器中

[2] 封装spring-boot-starter

POM文件中写好该starter信息

在resource/META-INF下新建spring.factories文件外面写上主动配置类的全限定类名(包门路+类名)

而后在以后我的项目的子模块中就能够了援用了,或者应用maven打包后mvn install:install-file -Dfile={} -DgroupId={} -DartifactId={} -Dversion={} -Dpackaging={} 转存至本地maven仓库就能够在其余我的项目中援用了。

[3] 对于RPC基于注解的服务主动注册,发现

BeanPostProcessor类是IOC容器对外提供的扩大接口,外部有两个办法
bean 初始化前的解决: postProcessBeforeInitialization
bean 初始化后的解决: postProcessAfterInitialization

因为咱们的主动定义注解是这样被应用于service bean的,所以服务注册是须要在bean初始化前执行

自定义服务发现的注解作用于controller bean的属性字段上,所以是在bean初始化后在对其进行解决

扫描到该bean的field存在注解时,获取该字段信息,应用动静代理使该字段的bean加强,而后field.set(bean, proxyObject)从新对controller bean的该字段设置新值