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

【白话系列】倍增算法 【序言】         我认为吧,所有能够优化复杂度的算法都是神奇的,所有能够化繁琐为形象的文字都是伟大的。一直觉得倍增算法是个很神奇的东西,所以决定写点东西纪念一下它。但是作为一个非常不称职的OIER,我非常讨厌在看别人的算法解析时整版的i,j,k等我看到鼠标就惯性移到右上角的符号语言,所以我想用最形象的方式来纪念它。 【一】         从前,有一只可爱得不得了的小白兔,它想从 阅读详情

相关推荐

网工最容易搞混的三个概念:防火墙、网闸、堡垒机,一文让你轻松搞明白。

网闸的作用可以简单概括为:在两个或多个不同安全级别的网络(如内网和外网、普通网与高安全网、受限网与互联网)之间建立一个严格隔离、信息流转的安全桥梁。它的核心任务是实现数据安全传输与隔离,避免网络之间的直接连接带来的安全隐患。数据传输安全:网闸保证数据从一个网络到另一个网络时,能够进行审查、过滤和转换,防止恶意数据或非法信息被传入内部网络或外部泄露。高安全性隔离:网闸常常用于企业的内外网隔离、军事网络、政府机关等对数据隔离要求极高的环境。

HWP18612324139的博客 3637

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

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

qq_992833908 4300

Win11显卡驱动安装失败的全面解决方案

Windows 11显卡驱动安装失败是一个比较常见的问题,但通过上述方法,我们可以有效地解决这一问题。方法一通过调整组策略编辑器的驱动程序安装策略,可能解决一些因签名问题导致的安装失败;而方法二则通过重装Windows 11系统,为系统提供一个全新的、干净的环境,从而可能解决更复杂的安装问题。在实际操作中,用户可以根据具体情况选择合适的方法来解决显卡驱动安装失败的问题。

nntxthml的博客 2662

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

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

weixin_33835103的博客 1902

ElasticSearch 集群安全加固实战:从零配置TLS证书与密码认证

本文提供了一份详尽的ElasticSearch集群安全加固实战指南,重点介绍了如何从零开始配置TLS证书与用户安全认证。通过分步讲解证书生成、节点配置、集群重启及密码设置,帮助管理员为ES集群构建通信加密与访问控制的双重防线,有效提升数据安全性与合规性。

weixin_29323493的博客 444

Qt+WebAssembly学习笔记(六)win10+Qt6.4.0rc1开发环境搭建

前言:因项目的缘故,笔者有段时间没测试了,官方也修复了很问题,笔者今天记录下最新版本环境搭建。

aggs1990的专栏 3766

sofaboot的启动原理解析

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

define_us的专栏 1177

Python爬虫实战:实时爬取东方财富网股票行情

东方财富网实时行情(价格、涨跌幅、成交量等)K线图、分时图、技术指标市盈率、换手率、总市值等指标相比某些收费API,东方财富网页端接口不需要登录、免费、响应快、封装清晰,适合爬虫实践。东方财富网股票数据接口分析实时数据抓取与字段提取数据结构化处理自动化批量抓取多线程加速采集数据可视化展示支持存储为CSV/Excel/数据库。

2201_76125261的博客 1万+

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

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

闲来无事 1613

Prometheus+Grafana+alertmanager+PrometheusAlert监控告警 实现飞书告警

以上 是以grafana做的邮件告警,但是感觉邮件很少人看。下面是以webhook 可以接入。启动alertmanager (设置 开机在启动)下载prometheusalter 配置文件。这里的告警是基于grafana上搭建的。我们启动PrometheusAlert。写完之后进行重启Prometheus。prometheus 的告警规则。测试 基于我们生产环境做的文档。然后在grafana上导模板。上导入模板就可以 直接引用。访问 grafana页面。重启一下grafana。

墨痕诉清风的博客 859

【网络安全 | 渗透工具】密码字典生成工具crunch、cupp安装使用教程

Crunch是一个常用的密码破解工具,它可以根据指定的字符集、长度和模式生成各种可能的密码并进行暴力破解。同时,Crunch可以将生成的密码保存到文件中,以便在破解工具中使用。在进行渗透测试时,手动收集密码字典是十分耗时的,利用密码字典生成工具可以大幅缩短时间,提高爆破宽度。

等风来 8424

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

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

Park33的博客 812

PID控制算法实践应用(一):PID算法的离散化

由于计算机控制是一种采样控制,它只能根据采样时刻的偏差值计算控制量。因此,连续PID控制算法不能直接使用,需要采用离散化方法。

m0_72676510的博客 2602

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

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

闲时不要多想 1245

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

SOFABoot

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

qq_33709529的博客 1866

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

SOFABoot扩展@sofaservice

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

董广明的博客 3480

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

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、付费专栏及课程。

余额充值