ITPub博客

首页 > IT职业 > IT职场 > Springboot两要素

Springboot两要素

IT职场 作者:disable 时间:2021-09-09 10:12:25 0 删除 编辑

为什么需要有Springboot,我们知道一些脚本语言框架在web应用开发方面非常方便,比如常见的ROR,Node,php等,而使用tomcat开发一个简单的hello world的页面服务器就需要做很多配置,尽管可以使用之前的SSH web三剑客,但也仍然比较麻烦。Springboot通过开箱即用的组件化的方式简化了这一切,让javaer也可以享受到脚本语言一样的快速高效。

Springboot如何实现开箱即用的。我们知道Springboot是基于Spring框架,要实现开箱即用,有两点比较重要,第一,可以自动将组件加载到Spring容器中;第二,提供一种默认配置,同时也可以进行自定义。这样在引入一个组件之后,系统自动加载代码与默认配置,无需任何其他操作就可以直接使用,如何有特殊需求,可以修改配置来进行自定义。

首先第一点,自动加载Bean主要是利用SpringFactoriesLoader,类似Java SPI机制,我们在很多其他地方也常常见到,比如Logger,java中的logging会根据引入的jar包中的logfactory文件来查找目前使用的logger框架,同样,Springboot也会查找当前路径下jar中各个starter中的spring.factories文件,找到每个组件的扩展信息,例如ApplicationContextInitializer,ApplicationListener,EnableAutoConfiguration等,其中EnableAutoConfiguration非常重要,Springboot会将所有的查找到的EnableAutoConfiguration加载到容器中,这样可以完成组件的初始化,Bean加载等操作了。其次每个组件会设置一套需要的配置数据元数据,并且一般都会有一套默认数据,而且用户还可以在application.properties中进行自定义,最小化简化用户配置。

例如如果要为一个RPC框架提供一个Springboot的组件,可以直接引入starter就可以使用,应该如何实现呢。

我们可以为RPC的服务端与消费端分别定义一个注解:@Provider 与@Consumer,  每个注解里面会有一些服务需要的参数,例如版本号,超时时间等,然后新增一个RPCEnableAutoConfiguration,让RPCEnableAutoConfiguration中首先初始化RPC需要的一些信息,例如与地址注册服务器的链接等,然后扫描容器中的所有带有@Provider 与@Consumer中的Bean或者字段信息,然后根据每个注解中的信息生成RPC需要的Bean并注册到容器,这样就实现了一个RPC开箱即用的组件了。要达到的效果大致如下:


图片描述

RPC配置类

图片描述

服务提供类



作者:真海
链接:https://www.jianshu.com/p/91c22b4e1105


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/200/viewspace-2818148/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-09-12

  • 博文量
    86
  • 访问量
    16279