SOFABoot源码解析之启动原理(1)-注解分析

异步初始化bean 前两天在看 SOFABoot 的时候,看到一个让我眼前一亮的东西,来给大家盘一下。SOFABoot,你可能不眼熟,但是没关系,本文也不是给你讲这个东西的,你就认为它是 SpringBoot 的变种就行了。因为有蚂蚁金服背书,所以主要是一些金融类的公司在使用这个框架:官方介绍是这样的:SOFABoot 是蚂蚁金服开源的基于 Spring Boot 的研发框架,它在 Spring Boot 的基础上,提供了诸如 Readiness Check,类隔离,日志空间隔离等能力。 阅读详情

一 、概述

        SOFABoot是蚂蚁金服开源的基于 Spring Boot 的研发框架,它在Spring Boot 的基础上,提供了诸如 Readiness Check,类隔离,日志空间隔离等等能力。在增强了 Spring Boot 的同时,SOFABoot 提供了让用户可以在 SpringBoot中非常方便地使用 SOFA 中间件的能力。

         为了基于SOFABoot框架进行研发,建议大家熟读一下《SpringBoot参考指南》这本书。SpringBoot参考指南有html,pdf和epub等形式的文档,大家可以从http://docs.spring.io/spring-boot/docs/current/reference获取到最新版本。

        在此,通过详细地描述SpringBoot内部启动原理,为大家基于SOFABoot框架进行开发提供快速入门。

        由于SOFABoot基于SpringBoot项目,所以会用到SpringBoot的启动类:

1.  @SpringBootApplication
2.  @ImportResource({"classpath*:rpc-starter-example.xml" })
3.  public class SofaBootRpcDemoApplication {
4.   
5.      public static void main(String[] args)throws InterruptedException {
6.       
7.          ApplicationContext applicationContext =SpringApplication.run(SofaBootRpcDemoApplication.class, args);
8.   
9.      }
10. }
        从@SpringBootApplication和SpringApplication.run开始,我们逐步分析SpringBoot的启动原理。

        首先,看一下注解@SpringBootApplication的定义:

1.  @Target(ElementType.TYPE)
2.  @Retention(RetentionPolicy.RUNTIME)
3.  @Documented
4.  @Inherited
5.  @SpringBootConfiguration
6.  @EnableAutoConfiguration
7.  @ComponentScan(excludeFilters =@Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class))
8.  public @interface SpringBootApplication {
9.  ……略
10. }

       @SpringBootApplication是一个复合Annotation,使用了多个Annotation进行了原信息标注,其中3个比较关键的Annotation分别为:

         1. @SpringBootConfiguration,实际使用@Configuration;

         2. @EnableAutoConfiguration;

         3. @ComponentScan;

二、@Configuration

        @Configuration注解是JavaConfig形式的Spring Ioc容器的配置类,可替换Spring XML配置文件。

   被@Configuration注解的配置类包含一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器。

        @Configuration注解的配置类有如下要求:

        1.   @Configuration不可以是final类型;

        2.   @Configuration不可以是匿名类;

        3.   嵌套的configuration必须是静态类。

        代码示例如下:

1.  @Configuration
2.  public class TestConfiguration {
3.      public TestConfiguration() {
4.          System.out.println("TestConfiguration容器启动初始化。。。");
5.      }
6.   
7.      // @Bean注解注册bean,同时可以指定初始化和销毁方法
8.      //@Bean(name="testBean",initMethod="start",destroyMethod="cleanUp")
9.      @Bean
10.     @Scope("prototype")
11.     public TestBean testBean() {
12.         return new TestBean();
13.     }
14. }

        SpringBoot社区推荐使用基于JavaConfig的配置形式。所以,这里的启动类标注了@Configuration之后,本身其实也是一个IoC容器的配置类。

三、@ComponentScan

        @ComponentScan注解对应Spring XML文件中的 <context:component-scan>元素。

        @ComponentScan的功能是自动扫描并加载符合条件的组件(比如@Component和@Repository等)的bean定义,最终将这些bean定义加载到IoC容器中。

        通过basePackages、basePackageClasses、includeFilters、excludeFilters等属性来细粒度的定制@ComponentScan自动扫描的范围,在此只描述比较常用的两个属性,其它属性自行查阅相关资料。

        1.   basePackages:扫描basePackages中指定的package及其子package中声明的组件。

        2.   basePackageClasses:扫描basePackageClasses中指定的类所在的package及其子package中声明的组件。

        如果不指定,则默认Spring框架实现会从声明@ComponentScan所在类的package进行扫描。所以,SpringBoot的启动类最好是放在root package下,因为默认不指定basePackages。

四、@EnableAutoConfiguration

        @EnableAutoConfiguration注解的自动配置功能是从classpath中搜寻所有的META-INF/spring.factories配置文件(项目及该项目依赖的Jar包),并将其中org.springframework.boot.autoconfigure.EnableAutoConfiguration对应的配置项通过反射机制实例化为对应的标注了@Configuration的JavaConfig形式的IoC容器配置类,然后加载到IoC容器。

        @Enable*注释并不是新发明的注解,早在Spring 3框架就引入了这些注解,用这些注释替代XML配置文件。

        很多Spring开发者都知道@EnableTransactionManagement注解,它能够声明事务管理;@EnableWebMvc注解,它能启用Spring MVC;@EnableScheduling注解,它可以初始化一个调度器;@EnableMBeanExport是通过@Import将JMX相关的bean定义加载到IoC容器。这些注解事实上都是简单的配置,通过@Import注解导入。  

        @EnableAutoConfiguration也是借助@Import的帮助,将所有符合自动配置条件的bean定义加载到IoC容器。

        @EnableAutoConfiguration是一个复合Annotation,其自身定义关键信息如下:

1.  @Target(ElementType.TYPE)
2.  @Retention(RetentionPolicy.RUNTIME)
3.  @Documented
4.  @Inherited
5.  @AutoConfigurationPackage
6.  @Import(EnableAutoConfigurationImportSelector.class)
7.  public @interface EnableAutoConfiguration{
8.  ……略
9.  }

        其中,最关键部分为@Import(EnableAutoConfigurationImportSelector.class)。借助EnableAutoConfigurationImportSelector功能,@EnableAutoConfiguration可以帮助SpringBoot应用将所有符合条件的@Configuration配置都加载到当前SpringBoot创建并使用的IoC容器。

        EnableAutoConfigurationImportSelector类使用SpringFactoriesLoader类的loadFactoryNamesof()方法,而SpringFactoriesLoader会查询所有加载的Jar包中的META-INF/spring.factories文件。

        SpringFactoriesLoader属于Spring框架私有的一种扩展方案,其主要功能就是从指定的配置文件META-INF/spring.factories加载配置。借助于SpringFactoriesLoader的支持,@EnableAutoConfiguration可以实现智能的自动配置功能。

        当找到spring.factories文件后,SpringFactoriesLoader以@EnableAutoConfiguration类的全限定类名org.springframework.boot.autoconfigure.EnableAutoConfiguration作为查找的Key,获取对应的一组@Configuration类。

        让我们来看看spring-boot-autoconfigure模块的Jar包,它包含了一个spring.factories文件,内容如下:

1.  # Initializers
2.  org.springframework.context.ApplicationContextInitializer=\
3.  org.springframework.boot.autoconfigure.SharedMetadataReaderFactoryContextInitializer,\
4.  org.springframework.boot.autoconfigure.logging.AutoConfigurationReportLoggingInitializer
5.   
6.  # Application Listeners
7.  org.springframework.context.ApplicationListener=\
8.  org.springframework.boot.autoconfigure.BackgroundPreinitializer
9.   
10. # Auto Configure
11. org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
12. org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\
13. org.springframework.boot.autoconfigure.aop.AopAutoConfiguration,\
14. org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration,\
15. org.springframework.boot.autoconfigure.MessageSourceAutoConfiguration,\
16. org.springframework.boot.autoconfigure.PropertyPlaceholderAutoConfiguration,\
17. org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration,\
18. org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration,\
19. org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration,\
20. org.springframework.boot.autoconfigure.cloud.CloudAutoConfiguration,\
21. org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration,\
22. org.springframework.boot.autoconfigure.couchbase.CouchbaseAutoConfiguration,\
23. org.springframework.boot.autoconfigure.dao.PersistenceExceptionTranslationAutoConfiguration,\
24. org.springframework.boot.autoconfigure.data.cassandra.CassandraDataAutoConfiguration,\
25. org.springframework.boot.autoconfigure.data.cassandra.CassandraRepositoriesAutoConfiguration,\
26. org.springframework.boot.autoconfigure.data.couchbase.CouchbaseDataAutoConfiguration,\
27. org.springframework.boot.autoconfigure.data.couchbase.CouchbaseRepositoriesAutoConfiguration,\
28. org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAutoConfiguration,\
29. org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchDataAutoConfiguration,\
30. org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchRepositoriesAutoConfiguration,\
31. org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration,\
32. org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration,\
33. org.springframework.boot.autoconfigure.data.mongo.MongoRepositoriesAutoConfiguration,\
34. org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfiguration,\
35. org.springframework.boot.autoconfigure.data.neo4j.Neo4jRepositoriesAutoConfiguration,\
36. org.springframework.boot.autoconfigure.data.solr.SolrRepositoriesAutoConfiguration,\
37. org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration,\
38. org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration,\
39. org.springframework.boot.autoconfigure.data.rest.RepositoryRestMvcAutoConfiguration,\
40. org.springframework.boot.autoconfigure.data.web.SpringDataWebAutoConfiguration,\
41. org.springframework.boot.autoconfigure.elasticsearch.jest.JestAutoConfiguration,\
42. org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration,\
43. org.springframework.boot.autoconfigure.gson.GsonAutoConfiguration,\
44. org.springframework.boot.autoconfigure.h2.H2ConsoleAutoConfiguration,\
45. org.springframework.boot.autoconfigure.hateoas.HypermediaAutoConfiguration,\
46. org.springframework.boot.autoconfigure.hazelcast.HazelcastAutoConfiguration,\
47. org.springframework.boot.autoconfigure.hazelcast.HazelcastJpaDependencyAutoConfiguration,\
48. org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration,\
49. org.springframework.boot.autoconfigure.integration.IntegrationAutoConfiguration,\
50. org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration,\
51. org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,\
52. org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration,\
53. org.springframework.boot.autoconfigure.jdbc.JndiDataSourceAutoConfiguration,\
54. org.springframework.boot.autoconfigure.jdbc.XADataSourceAutoConfiguration,\
55. org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration,\
56. org.springframework.boot.autoconfigure.jms.JmsAutoConfiguration,\
57. org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration,\
58. org.springframework.boot.autoconfigure.jms.JndiConnectionFactoryAutoConfiguration,\
59. org.springframework.boot.autoconfigure.jms.activemq.ActiveMQAutoConfiguration,\
60. org.springframework.boot.autoconfigure.jms.artemis.ArtemisAutoConfiguration,\
61. org.springframework.boot.autoconfigure.jms.hornetq.HornetQAutoConfiguration,\
62. org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration,\
63. org.springframework.boot.autoconfigure.groovy.template.GroovyTemplateAutoConfiguration,\
64. org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration,\
65. org.springframework.boot.autoconfigure.jooq.JooqAutoConfiguration,\
66. org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration,\
67. org.springframework.boot.autoconfigure.mail.MailSenderAutoConfiguration,\
68. org.springframework.boot.autoconfigure.mail.MailSenderValidatorAutoConfiguration,\
69. org.springframework.boot.autoconfigure.mobile.DeviceResolverAutoConfiguration,\
70. org.springframework.boot.autoconfigure.mobile.DeviceDelegatingViewResolverAutoConfiguration,\
71. org.springframework.boot.autoconfigure.mobile.SitePreferenceAutoConfiguration,\
72. org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration,\
73. org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration,\
74. org.springframework.boot.autoconfigure.mustache.MustacheAutoConfiguration,\
75. org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration,\
76. org.springframework.boot.autoconfigure.reactor.ReactorAutoConfiguration,\
77. org.springframework.boot.autoconfigure.security.SecurityAutoConfiguration,\
78. org.springframework.boot.autoconfigure.security.SecurityFilterAutoConfiguration,\
79. org.springframework.boot.autoconfigure.security.FallbackWebSecurityAutoConfiguration,\
80. org.springframework.boot.autoconfigure.security.oauth2.OAuth2AutoConfiguration,\
81. org.springframework.boot.autoconfigure.sendgrid.SendGridAutoConfiguration,\
82. org.springframework.boot.autoconfigure.session.SessionAutoConfiguration,\
83. org.springframework.boot.autoconfigure.social.SocialWebAutoConfiguration,\
84. org.springframework.boot.autoconfigure.social.FacebookAutoConfiguration,\
85. org.springframework.boot.autoconfigure.social.LinkedInAutoConfiguration,\
86. org.springframework.boot.autoconfigure.social.TwitterAutoConfiguration,\
87. org.springframework.boot.autoconfigure.solr.SolrAutoConfiguration,\
88. org.springframework.boot.autoconfigure.velocity.VelocityAutoConfiguration,\
89. org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration,\
90. org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration,\
91. org.springframework.boot.autoconfigure.transaction.jta.JtaAutoConfiguration,\
92. org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration,\
93. org.springframework.boot.autoconfigure.web.EmbeddedServletContainerAutoConfiguration,\
94. org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration,\
95. org.springframework.boot.autoconfigure.web.HttpEncodingAutoConfiguration,\
96. org.springframework.boot.autoconfigure.web.HttpMessageConvertersAutoConfiguration,\
97. org.springframework.boot.autoconfigure.web.MultipartAutoConfiguration,\
98. org.springframework.boot.autoconfigure.web.ServerPropertiesAutoConfiguration,\
99. org.springframework.boot.autoconfigure.web.WebClientAutoConfiguration,\
100. org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration,\
101. org.springframework.boot.autoconfigure.websocket.WebSocketAutoConfiguration,\
102. org.springframework.boot.autoconfigure.websocket.WebSocketMessagingAutoConfiguration,\
103. org.springframework.boot.autoconfigure.webservices.WebServicesAutoConfiguration
104.  
105. # Failure analyzers
106. org.springframework.boot.diagnostics.FailureAnalyzer=\
107. org.springframework.boot.autoconfigure.diagnostics.analyzer.NoSuchBeanDefinitionFailureAnalyzer,\
108. org.springframework.boot.autoconfigure.jdbc.DataSourceBeanCreationFailureAnalyzer,\
109. org.springframework.boot.autoconfigure.jdbc.HikariDriverConfigurationFailureAnalyzer
110.  
111. # Template availability providers
112. org.springframework.boot.autoconfigure.template.TemplateAvailabilityProvider=\
113. org.springframework.boot.autoconfigure.freemarker.FreeMarkerTemplateAvailabilityProvider,\
114. org.springframework.boot.autoconfigure.mustache.MustacheTemplateAvailabilityProvider,\
115. org.springframework.boot.autoconfigure.groovy.template.GroovyTemplateAvailabilityProvider,\
116. org.springframework.boot.autoconfigure.thymeleaf.ThymeleafTemplateAvailabilityProvider,\
117. org.springframework.boot.autoconfigure.velocity.VelocityTemplateAvailabilityProvider,\
118. org.springframework.boot.autoconfigure.web.JspTemplateAvailabilityProvider

假新闻检测论文分享(17)CAFE(Cross-modal Ambiguity Learning for Multimodal Fake NewsDetection) 本文首先从信息论的角度对跨模态歧义性学习问题进行形式化描述,利用不同单模态特征之间的分布散度量化其歧义性;然后,提出了一种模糊度感知的多模态假新闻检测方法CAFE。CAFE通过自适应地聚合单模态特征和跨模态关联,即在跨模态歧义性较弱时依赖单模态特征,在跨模态歧义性较强时参考跨模态关联,从而提高假新闻检测精度。提出了跨模态歧义学习问题,这是多模态假新闻检测的一个关键挑战,并提出了一种基于KL散度的方法,通过估计其特征分布的散度来量化文本和图像之间的歧义。 阅读详情

相关推荐

单片机笔记十二:华大HC32L136超低功耗设计实战

本文详细介绍了华大HC32L136单片机的超低功耗设计实战,包括深度睡眠模式下仅0.5μA的电流消耗、五种功耗模式的对比与配置、外设使用技巧及硬件级优化方法。通过实际项目案例,展示了如何利用ARM Cortex-M0+内核的HC32L136显著延长电池寿命,适用于智能门锁、额温枪等低功耗设备。

weixin_29189373的博客 400

基于SpringBoot的框架SOFABoot,青出于蓝而胜于蓝

基于SpringBoot的框架SOFABoot,青出于蓝而胜于蓝(阿里出品) 程序员界的彭于晏 2018-11-08 22:02:58 SOFABoot 是蚂蚁金服开源的基于 Spring Boot 的研发框架,它在 Spring Boot 的基础上,提供了诸如 Readiness Check,类隔离,日志空间隔离等等能力。在增强了 Spring Boot 的同时,SOFABoot 提供了让用...

qq_992833908 4300

MAX30102心率血氧传感器

估算AC、DC值的方法如下:找两个波谷点,两个波谷点之间有一个波峰点,两个波谷点相连成一条直线,与Y轴平行的线穿过波峰点会与两个波谷点连接成的直线相交于一点,这个点就是DC点,DC点的Y轴对应值就是直流分量,AC分量的值为波峰点到DC点之间的差值。在医院测量中常用的一种血氧采集方式,如下图所示,光电传感器和光源分别置于手指的两侧,光源穿过手指被另一侧的光电二极管接收,根据光衰减量计算血氧浓度。那么,根据上面的Beer-Lambert 定理,针对测量的具体场景,测量过程的衰减为三层穿透物质衰减量的叠加。

qq_41861711的博客 1万+

【剖析 | SOFARPC 框架】系列之 SOFARPC 注解支持剖析

SOFAScalable Open Financial Architecture是蚂蚁金服自主研发的金融级分布式中间件,包含了构建金融级云原生架构所需的各个组件,是在金融场景里锤炼出来的最佳实践。 1、前言在 SOFABoot 环境下,SOFARPC 提供三种方式给开发人员发布和引用 RPC 服务:XML 方式(配置)Annotation 方式(注解)编程 API 方式(动态)编程 API 方式...

weixin_33835103的博客 1902

51单片机基础知识

前言 周末闲着无聊,以后定时更新一期关于51单片机的学习案例,以供大家平时参考使用。至于单片机,你可以理解为人的大脑,而人各项身体器官的运作需要意识给到大脑,然后大脑再驱动我们的中枢神经进行相应的动作,这里的意识可以理解为我们要写的程序,而人的器官相当于各种输出设备,例如我们以后要学的LED、电机、各种传感器等等。学好单片机能让你找到一份相对不错的工作,当然越可观的东西也是要付出相应努力的。 一、51单片机是什么? 通常我们一说到 51 单片机,指的都是兼容IntelMCS-51体系架构的一系列单片机,而

qq_43537819的博客 6905

SimpleITK图像基础(一)——3D Resampling

文章目录前言基于SimpleITK进行实现 前言 进入深度学习网络之前需要进行统一数据集,这个时候需要对这些数据集进行重新采样,即假设各向同性体素并重新定向它们,以便可以读取所有图像的像素矩阵。 在将方位变换成一致时,可以用DICOMOrientImageFilter过滤器,可以将 DesiredCoordinateOrientation设置为你想要变换的方位,它将计算出所需的置换顺序并根据需要执行翻转以接近所需方向。 基于SimpleITK进行实现 workflow如下: step 1:首先运行DICOM

YYY_77的博客 2019

sofaboot的启动原理解析

SpringBoot的原理 我们先找到这张springboot的原理图

define_us的专栏 1177

Labview程序框架介绍

当掌握LabVIEW基础知识并达到,理解单个小型模块程序会相对轻松。而若想进一步探索大型程序,就必然需要了解程序框架相关内容。LabVIEW常用的程序架构包括等。在多年工作中,我接触过的众多高级工程师所开发的大型程序,基本都基于这些架构搭建。接下来,将为大家详细介绍这些框架。

Misterlhw的博客 4620

SOFABoot源码解析之启动原理(2)-源码解析

        以SOFABoot自带的RPC案例sofaboot-sample-with-rpc作为SOFABoot应用(其实也是SpringBoot应用)启动源码分析的案例。        在此提前说明,源码分析主要分析主流程,以及本人认为比较重要的一些内容,对于其它部分,大家可以基于本文档,自行研读。        在该案例中,采用WEB环境下使用的Spring应用上下文环境org.spri...

闲来无事 1613

Vue 10分钟入门VR全景显示 基于photo-sphere-viewer

文章目录前言一、引入photo-sphere-viewer?二、使用步骤1.引入库2.声明容器3.内容加载4.全部代码总结 前言 由于工作的需求,要实现全景图片的展示与预览,本来以为会是一个很难的内容,没想到使用现成的组件photo-sphere-viewer就可以轻松实现,上手只需要10分钟! 一、引入photo-sphere-viewer? 可以直接通过npm进行引入 npm install photo-sphere-viewer 二、使用步骤 1.引入库 photo-sphere-viewer

YIGE_MO的博客 5866

“基于车载车机 ADB 的安卓自动化测试”以及“类似智谱 AutoGLM 的 AI 安卓自动化项目”的整理和选型建议。

本文系统梳理了安卓自动化测试两大路线。传统ADB框架中,**Appium**适用于企业级测试,**AndroidViewClient**和**Airtest**适合脚本化与图像识别场景。AI驱动的方案里,**智谱Open-AutoGLM**擅长中文场景的视觉理解与操作,**DroidRun**支持多模型与跨平台,而**Android-MCP**则适合将安卓能力作为工具集成到现有AI平台。选型需根据稳定性、技术栈与AI集成需求决定。

weixin_39072720的博客 901

可以,很强,68行代码实现Bean的异步初始化,粘过去就能用。

前两天在看 SOFABoot 的时候,看到一个让我眼前一亮的东西,来给大家盘一下。SOFABoot,你可能不眼熟,但是没关系,本文也不是给你讲这个东西的,你就认为它是 SpringBoot 的变种就行了。因为有蚂蚁金服背书,所以主要是一些金融类的公司在使用这个框架:官方介绍是这样的:SOFABoot 是蚂蚁金服开源的基于 Spring Boot 的研发框架,它在 Spring Boot 的基础上,提供了诸如 Readiness Check,类隔离,日志空间隔离等能力。

Park33的博客 812

【Win10/11】Windows电脑WiFi显示小地球/断网的解决方法 Windows WiFi小地球、网络连接中断、网络重置、无线网卡驱动、Win10/Win11网络修复

最近经常有粉丝留言问我,Windows 电脑突然连不上 WiFi,右下角网络图标显示成了“小地球 🌐”,或者干脆提示“未连接 - 没有可用的连接”。明明其他设备网络都正常,唯独自己的电脑断了。作为在互联网大厂混迹多年的前端程序员,我自己也碰到过这个问题。总结几种比较常见、亲测有效的解决方法,写出来供大家参考,希望能帮你快速恢复上网!问题原因推荐解决方法系统设置错乱使用网络重置功能驱动异常或冲突卸载后重启自动安装驱动驱动版本过旧手动更新网卡驱动实在不行考虑使用系统还原点或重装系统这几个方法中,

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 3850

【Java】SOFABoot 启动加速-异步初始化方法

Spring Boot 启动加速 异步初始化方法

闲时不要多想 1245

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SOFABoot

前两天在看 SOFABoot 的时候,看到一个让我眼前一亮的东西,来给大家盘一下。SOFABoot,你可能不眼熟,但是没关系,本文也不是给你讲这个东西的,你就认为它是 SpringBoot 的变种就行了。因为有蚂蚁金服背书,所以主要是一些金融类的公司在使用这个框架:官方介绍是这样的:SOFABoot 是蚂蚁金服开源的基于 Spring Boot 的研发框架,它在 Spring Boot 的基础上,提供了诸如 Readiness Check,类隔离,日志空间隔离等能力。

qq_33709529的博客 1866

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

SOFABoot扩展@sofaservice

项目需要,使用了SOFABoot,它是蚂蚁金服开源的基于 Spring Boot (当然它是建立在spring 之上)的研发框架,使用过程中,发现很多个服务注册时有些慢,特别是测试时,其实我只想测试一两个服务,那么程序启动时我根本就不需要注册那么多服务,测试时按需注册、个性化,钉钉上问了相关工作人员,他们说没有,我只能自己实现了。 1. 首先去github上把源码下载下来,地址:https://github.com/sofastack/sofa-boot 导入到开发工具,看个人情况是eclipse...

董广明的博客 3480

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Bean的异步加载,SOFABoot主打一个异步

最近在学习异步编程的过程中,偶然看到Bean的异步加载,之前只用过方法的异步事务、异步回调、异步线程,基本都是针对方法的执行,但是具体涉及到Bean实例的异步加载,还没有在实际开发中应用过,在我的理解Spring boot在项目启动的时候会加载很多bean,比如一些远程配置、数据源,可能会在需要调用的时候,进行使用,如果这个时候在进行加载,是不是就会节约很多资源。了解Spring的小伙伴应该知道,bean加载避免不了上下文的切换,减少上下文的切换本身就是一种节约CPU资源的方式。

weixin_74412978的博客 480

【开源项目】SofaBoot实现Spring Bean 异步初始化的源码拆解

【开源项目】SofaBoot实现Spring Bean 异步初始化的源码拆解

秋装什么的博客 895

SOFABoot 开源项目安装与使用指南

当你克隆或下载 `sofastack/sofa-boot` 仓库后,你会看到以下主要目录和文件: - **`navigation options`**: 这通常是指代码仓库中用于导航的选项列表,但在实际的项目文件夹中并不存在这样的目录。 - **`masterBranchesTags`**: 此描述同样指向一个非实体概念,在实际文件系统中不会找到对应的文件夹。 - **`pom.xml`**...

gitblog_00125的博客 482

SOFABoot故障排查终极指南:7个常见问题与解决方案

SOFABoot是基于Spring Boot的增强框架,提供就绪检查、类隔离、日志空间分离等功能。在大型微服务生产环境中,SOFABoot的稳定性至关重要。本文将深入分析7个最常见的SOFABoot故障场景,并提供实用的排查解决方案,帮助开发者快速定位和解决问题。 ## 1. 就绪检查失败问题排查 🚨 **问题描述**:应用启动后,就绪检查端点`/actuator/readiness`返回失

gitblog_00304的博客 621

Spring-Boot原理

SpringBoot通过起步依赖简化依赖管理,自动解决版本冲突问题。其核心原理包括:1)组件扫描机制自动发现被@Component标记的类;2)基于反射和Bean工厂创建管理Bean;3)通过@Import动态导入配置类。自动配置基于条件注解实现,读取META-INF/spring下的配置清单加载预设Bean。自定义Starter封装常用配置,实现依赖自动装配。整个过程体现了约定优于配置的思想,显著提升开发效率。

weixin_74354824的博客 755

SOFA Weekly | MOSN 发布、直播系列整理、0312直播预告

SOFA WEEKLY | 每周精选,筛选每周精华问答同步开源进展,欢迎留言互动SOFAStack(ScalableOpenFinancialArchitecture Stack)...

金融级分布式架构 514

JApiDocs开箱即用的SpringBoot接口文档生成工具

JApiDocs是一个无需额外注解、开箱即用的SpringBoot接口文档生成工具。 无图无真相,生成文档的效果如下: 相比Swagger要写一堆注解,Spring RestDocs需要写测试用例,才能生成API文档。JApiDocs 具有无痛集成的特点,你只需花几分钟就能知道它怎么用了。 快速开始 maven <dependency> <groupId>io.github.yedaxia</groupId> <artifactId&g.

没有伞的孩子必须努力奔跑!—小林 789

如何把 React Router 构建产物接入 Express 服务器并桥接服务端上下文?

如果你用的是 React Router 的 framework mode(`react-router build` 会产出构建文件),但又不想依赖内置的 React Router App Server(`@react-router/serve`),而是想让 Express 完全接管请求——比如挂上 Express 自己的中间件、session 或静态资源策略——就需要官方适配器 `@react-r

gitblog_00087的博客 957
上一篇: 微服务全链路解析
下一篇: SOFABoot源码解析之启动原理(2)-源码解析
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

任性之闲来无事

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值