版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java
微服务实战系列课堂Java
微服务实战系列课堂课堂资源https:
/n/1330000009887617课件资源
/mercyblitz/segmentfault-lessons/JSR资源
/mercyblitz/jsr议题Spring
Boot
Starter开发经验Spring
Boot系列总结Spring
Cloud系列预告问答互动SpringBoot
Starter说明Spring
Boot
Starter又称作为Spring
Boot启动器,是
Spring
Boot框架中最
的组件,其中可能包含以下组件:自动装配模块(Autoconfigure
Module)启动器模块(Starter
Module)SpringBoot
Starter自动装配模块(Autoconfigure
Module)自动装配模块包含类库中的每种必要启动单元,它可能也包含配置键的定义,也可能包含任意用于未来自定义已初始化组件的回调接口。举例说明配置键的定义@ConfigurationProperties自定义已初始化组件的回调接口EmbeddedServletContainerCustomizerSpringBoot
Starter自动装配模块(Autoconfigure
Module)自动装配类型自动装配Bean(Auto-Configuration
Beans)Spring配置(@Configuration)SpringBoot管理上下文配置(@ManagementContextConfiguration)Spring
Boot组件Failure
ysisReporterSpringApplicationRunListenerAutoConfigurationImportListenerSpringBoot
Starter自动装配模块(Autoconfigure
Module)理解自动装配
Bean(Auto-Configuration
Beans)自动装配是由标准Spring
@Configuration实现,结合Spring4的新特性条件判断注解@Conditional以及其Spring
Boot派生注解,如:@ConditionalOnClass等。放置自动装配
Bean(META-INF/spring.factories)将标记@Configuration的Spring
ConfigurationClass放置在相对于class-path下的META-INF/spring.factories文件中,如下所示:.springframework.boot.autoconfigure.EnableAutoConfiguration=\.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration,\.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration,\SpringBoot
Starter自动装配模块(Autoconfigure
Module)前置条件
(@Conditional)Bean装配前的前置条件,基于Spring
4
@Conditional,判断当前Bean是否适合或者需要装配。在Spring
Boot场景下,时常使用其派生注解。Spring
Boot派生前置条件注解类条件Bean条件配置属性条件资源条件Web应用条件Spring表达式条件SpringBoot
Starter自动装配模块(Autoconfigure
Module)Spring
Boot派生前置条件注解类条件用于判断指定的Class对象或者其全名称存在与否存在判断:@ConditionalOnClass缺失判断:@ConditonalOnMissingClassBean条件用于判断指定的Spring
Bean是否在指定的Spring应用上下文中存在与否存在判断:@ConditionalOnBean缺失判断:@ConditonalOnMissingBeanSpringBoot
Starter自动装配模块(Autoconfigure
Module)Spring
Boot派生前置条件注解配置属性条件用于判断指定的配置属性存在与否、默认是否匹配等@ConditionalOnProperty资源条件用于判断指定的资源是否存在@ConditionalOnResource参考Spring章节:ResourcesSpringBoot
Starter自动装配模块(Autoconfigure
Module)Spring
Boot派生前置条件注解Web应用条件用于判断当前Spring
Boot应用是否为Web应用@ConditionalOnWebApplicationSpring表达式条件用于Spring表达式评估结果是否成立@ConditionalOnExpression参考Spring章节:Spring
Expression
Language(SpEL)SpringBoot
Starter自动装配模块(Autoconfigure
Module)自动装配顺序在特定自动装配Class之前@AutoConfigureBefore在特定自动装配Class之后@AutoConfigureAfter指定顺序@AutoConfigureOrderSpringBoot
Starter启动器模块(Starter
Module)启动器模块是一个空
JAR文件,仅提供辅助性依赖管理,这些依赖可能用于自动装配或者其他类库特别注意如果自动装配的类库需要其他启动器(starters),管理依赖时,需要将它们一并引入,最好不用使用单一启动器来间接依赖。提供一种合适依赖管理集合可能非常,如果其中类库存在非必须依赖时举例说明Spring
Boot启动模块:spring-boot-starter:${version}SpringBoot
Starter命名Spring
Boot
Starter
名称也称之为
Spring
Boot
命名空间,通常用于Maven
artifactId,并且能够传达starter模块的功能职责。Starter命名空间可简单地分类为:“
命名空间”和“自定义命名空间”。框架层面,Spring
Boot
Starter荐规约的形式。名并未做强制的约束,而是采用推SpringBoot
Starter命名规约命名空间前缀:“spring-boot-starter-”模式:spring-boot-starter-{}举例:spring-boot-starter-web、spring-boot-starter-actuator、spring-boot-starter-jdbc自定义命名空间(非
)后缀:“-spring-boot-starter”模式:{}-spring-boot-starter举例:acme-spring-boot-starterSpringBoot
StarterDEMO开发经验命名经验启动器名称一般由组件名+“-spring-boot-starter”后缀组件名使用名词比如,payment启动器名称尽可能言简意赅正例:payment-spring-boot-starter启动器名称尽可能避免歧义或者模糊反例:shop
-spring-boot-starter启动器名称尽可能避免与反例:spring-boot-starter-web或web-spring-boot-starter开发经验自动装配实现经验自动装配实现类名以“AutoConfiguration”为后缀正例:PaymentAutoConfiguration反例:PaymentConfig组合前置条件尽可能地严谨(多条件)例如SpringBoot
Web
MVC应用的判断正例:@ConditionalOnWebApplication@ConditionalOnClass(Servlet.class)@ConditionalOnClass(DispatcherServlet.class)反例:@ConditionalOnWebApplication开发经验自动装配实现经验组合前置条件判断成本由低到高(多条件)假设当@ConditionalOnClass和@ConditionalOnBean同时存在时,@ConditionalOnClass的判断成本较低,因此放置的位置优先。例如:@ConditionalOnClass(Car.class)@ConditionalOnBean(JpaRepository.class)public
class
VehicleAutoConfiguration
{}自动装配Class组件依赖与顺序尽可能明确@ConfiguraionPropertiesClass
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论