肖秋平 | 奈学教育
肖秋平 | 奈学教育 - 奈学教育 | 金牌讲师
实名认证 专业认证

性别: 注册于 2020-06-18

擅长:架构师

前巴分巴秒信息科技创始人&CEO, 前阿里巴巴架构师 10+年大型世界500强外企和IT互联网工作经验,参与并负责日活百万级音乐交易、直播类移动APP的整体分布式架构设计,中台建设; 前阿吉豆IT副总裁 CIO 负责AJIDOU阿吉豆全国800多家零售连锁门店企业信息化战略与规划,IT产品技术创新与组织管理。

向TA求助
15金币数
3715 经验值
0个粉丝
主页被访问 650 次

最近动态

2020-09-04 18:26 回答问题

简单来讲,我们可以将对SpringBoot的行为可以进行干预的配置方式划分为几类: 命令行参数(Command Line Args)。 系统环境变量(Environment Variables)。 位于文件系统中的配置文件。 位于classpath中的配置文件。 固化到代码中的配置项。 为了简化,其他比较少见场景的配置方式不在这里罗列。总的来说,以上几种方式按照优先级从高到低排列,高优先级方式提供的配置项可以覆盖或者优先生效,比如通过命令行参数传入的配置项会覆盖通过环境变量传入的同一配置项,当然也会覆盖其他

2020-09-04 18:26 回答问题

SpringBoot微框架从两个主要层面影响Spring社区的开发者们: 1)基于Spring框架的“约定优先于配置(COC)”理念以及最佳实践之路。 2)提供了针对日常企业应用研发各种场景的spring-boot-starter自动配置依赖模块,如此多“开箱即用”的依赖模块,使得开发各种场景的Spring应用更加快速和高效。

2020-09-04 18:25 回答问题

在实现自动配置的过程中,除了可以提供基于条件的配置,我们还可以对当前要提供的配置或者组件的加载顺序进行相应调整,从而让这些配置或者组件之间的依赖分析和组装可以顺利完成。我们可以使用@org.springframework.boot.autoconfigure.AutoConfigureBefore或者@org.springframework.boot.autoconfigure.AutoConfigureAfter让当前配置或者组件在某个其他组件之前或者之后进行,比如,假设我们希望某些JMX操作相关的bea

2020-09-04 18:25 回答问题

基于条件的自动配置来源于Spring框架中“基于条件的配置”这一特性。在Spring框架中,我们可以使用@Conditional这个Annotation配合@Configuration或者@Bean等Annotation来干预一个配置或者bean定义是否能够生效,其最终实现的效果或者语义类似于如下伪代码: if(符合@Conditional规定条件){ 加载当前配置或者注册当前bean定义; } 要实现基于条件的配置,我们只要通过@Conditional指定自己的Condition实现类就可以了(可以应用于

2020-09-04 18:24 回答问题

如果我们要为SpringBoot应用添加自定义的ApplicationListener,有两种方式: 1)通过SpringApplication.addListeners(..)或者SpringApplication.setListeners(..)方法添加一个或者多个自定义的ApplicationListener; 2)借助SpringFactoriesLoader机制,在META-INF/spring.factories文件中添加配置。

2020-09-04 18:23 回答问题

1)如果我们使用的是SpringApplication的静态run方法,那么,这个方法里面首先需要创建一个SpringApplication对象实例,然后调用这个创建好的SpringApplication的实例run方法。在SpringApplication实例初始化的时候,它会提前做几件事情:根据classpath里面是否存在某个特征类(org.springframework.web.context.ConfigurableWebApplicationContext)来决定是否应该创建一个为Web应用使用

2020-09-04 18:22 回答问题

为啥说@Component Scan是可有可无的?因为原则上来说,作为Spring框架里的“老一辈革命家”, @Component Scan的功能其实就是自动扫描并加载符合条件的组件或bean定义,最终将这些bean定义加载到容器中。加载bean定义到Spring的IoC容器,我们可以手工单个注册,不一定非要通过批量的自动扫描完成,所以说@Component Scan是可有可无的。

2020-09-04 18:22 回答问题

@EnableAutoConfiguration其实也没啥“创意”,各位是否还记得Spring框架提供的各种名字为@Enable开头的Annotation定义?比如@EnableScheduling、@EnableCaching、@EnableMBeanExport等,@EnableAutoConfiguration的理念和“做事方式”其实一脉相承,简单概括一下就是,借助@Import的支持,收集和注册特定场景相关的bean定义:@Enable Scheduling是通过@Import将Spring调度框架

2020-09-04 18:22 回答问题

这里的@Configuration对我们来说并不陌生,它就是JavaConfig形式的Spring IoC容器的配置类使用的那个@Configuration,既然SpringBoot应用骨子里就是一个Spring应用,那么,自然也需要加载某个IoC容器的配置,而SpringBoot社区推荐使用基于JavaConfig的配置形式,所以,很明显,这里的启动类标注了@Configuration之后,本身其实也是一个IoC容器的配置类!很多SpringBoot的代码示例都喜欢在启动类上直接标注@Configurat

2020-09-04 18:19 回答问题

@SpringBootApplication是一个“三体”结构,实际上它是一个复合Annotation:虽然它的定义使用了多个Annotation进行元信息标注,但实际上对于SpringBoot应用来说,重要的只有三个Annotation,而“三体”结构实际上指的就是这三个Annotation:@Configuration@Enable Auto Configuration@Component Scan所以,如果我们使用如下的SpringBoot启动类,整个SpringBoot应用依然可以与之前的启动类功能