1、基本概念
Environment 系统环境变量、jvm环境变量、命令行参数等构成的环境
启动时可以添加输入选项 如 --foo=bar --foo=baz
context bean所在的真正的执行上下文环境
Archive boot抽象出来的统一访问资源的层
url的例子 jar:file:/tmp/target/demo-0.0.1-SNAPSHOT.jar!/lib/aopalliance-1.0.jar
fat jar的目录结构:
BOOT-INF/classes/ 自己写的代码
BOOT-INF/lib/依赖的库
META-INF元数据
org/springframework/boot/loader boot的加载代码
2、loader 启动流程 org.springframework.boot.loader.JarLauncher
spring boot是将所有的东西打包成一个自包含的jar,所以其流程和一般的java应用有少许差别。
1》LaunchedURLClassLoader
加载所有需要的jar、class、资源等(支持jar的嵌套)
2》启动新线程执行main class的main方法
整个过程可以认为在原来的Main入口之前,进行了hack
3、web app的启动
1》deduceWebEnvironment
2》创建EmbeddedServletContainer
3》创建相应的servlet、jsp等
4、访问html、css、js、模板等资源的方式
通过Classloader提供的访问classpath resource的能力来实现
1》index.html 放入src/main/resources/static
在webmvc中会创建这个controller
2》ThymeleafProperties的默认目录设置
String DEFAULT_PREFIX = "classpath:/templates/"
3》jsp的目录 spring.view.prefix: /WEB-INF/jsp/
5、配置方法 命令行或配置文件
1> 激活不同profile java -jar *.jar --spring.profiles.active=dev
2>application.yml 放入src/main/java目录下
3>spring boot中默认会加载 classpath:/,classpath:/config
4> 直接引用 @Value(“${xxx}”)
5》映射整个对象 @ConfigurationProperties
在spring Boot入口类加上@EnableConfigurationProperties
6》常用配置
src/main/resources/static
src/main/resources/assets/js
6、自动配置的实现(引入pom自动实现bean的注入)
xml--annotation--conditionalAnno
web的自动配置 org.springframework.boot.autoconfigure.web
HttpEncodingProperties
7、依赖关系
boot-starter: boot, auto-configure, boot-starter-logging
boot-starter-web:boot-starter, boot-starter-tomcat, hibernate-validator, jackson-databind, spring-web, springweb-mvc
8、主要功能
spring-boot 支撑独立运行
boot-starter pom集成
auto-configure 自动配置和注入需要使用的bean,不需要使用方设置
spring-boot-actuator 监控和性能
9、基础逻辑
init = config arg module callback
包含关系:app, context, listener, filter, servlet
10、自定义某个starter
1) src/main/resources/META-INF/spring.factories中指定org.springframework.boot.autoconfigure.EnableAutoConfiguration
或者提供一个enableXXX的注释类
2)在xxxProperties中映射配置
3)在xxAutoConfiguration中注入bean,常见的注释包括
@Configuration
@ConditionalOnClass({ Client.class, TransportClientFactoryBean.class,NodeClientFactoryBean.class })
@EnableConfigurationProperties(ElasticsearchProperties.class)
@AutoConfigureAfter(ElasticsearchAutoConfiguration.class)
@Import(ElasticsearchRepositoriesRegistrar.class)
@Bean
@ConditionalOnMissingBean
4)如果使用的库比较复杂,需要在框架中有个集成的过程,比如
org.springframework.ldap 用于集成ldap
11、autoconfigure主要的包
org.springframework.boot.autoconfigure
spring.factories 相关处理、自动配置的前后顺序、相关注释
org.springframework.boot.autoconfigure.condition
提供各种注释,来表达注入的条件,ConditionalOnXXX
相关推荐
Spring技术内幕:深入解析Spring架构与设计原理.pdf
基于Spring Boot的二维码生成与解析接口.zip
果子学院Spring boot源码解析 学习视频讲解中的源码,可以用来参考
4 Spring4 扩展分析(二)21:11 5 Spring Boot 快速入门24:01 6 Spring Boot 配置分析(一)38:26 7 Spring Boot 配置分析(二)35:47 8 Spring Boot 自动配置32:44 9 Spring Boot @Enable*注解的工作原理47:07...
2.1.2 Spring Boot项目构建过程解析 24 2.2 使用起步依赖 27 2.2.1 指定基于功能的依赖 28 2.2.2 覆盖起步依赖引入的传递依赖 29 2.3 使用自动配置 30 2.3.1 专注于应用程序功能 31 2.3.2 运行应用程序...
Spring Boot面试题(92题),92道经典、常用的springboot面试题,帮助您找到合适的工作
1.6 Spring Boot使用别的json解析框架 1.7 全局异常捕捉 1.8 Spring Boot datasource - mysql 1.9 JPA - Hibernate 1.10 使用JPA保存数据 1.11 使用JdbcTemplate 1.12 Spring Boot修改端口号 1.13 Spring Boot配置...
Spring技术内幕:深入解析Spring架构与设计原理(第2部分) 《Spring技术内幕:深入解析Spring架构与设计原理》是Spring领域的问鼎之作,由业界拥有10余年开发经验的资深Java专家亲自执笔!Java开发者社区和Spring...
Spring Boot 基础讲解到 综合案例
Spring技术内幕:深入解析Spring架构与设计原理[汇编].pdf
第二部分深入阐述了各种基于IoC容器和AOP的Java EE组件在Spring中的实现原理;第三部分讲述了ACEGI安全框架、DM模块以及Flex模块等基于Spring的典型应用的设计与实现。 无论你是Java程序员、Spring开发者,还是平台...
开发一个基于Spring Boot的RESTful API服务,该服务提供用户管理功能,包括用户的增删改查操作。Spring Boot的自动配置减少了繁琐的XML配置,通过条件化配置,使得开发者可以更加专注于业务逻辑的实现。通过起步依赖...
Spring Boot:启动原理解析
SPRING技术内幕:深入解析SPRING架构与设计原理.pdf 完整版高清。
Spring技术内幕 深入解析Spring架构与设计原理3(完整清晰版),你懂的。下载后请您回复支持一下。
主要介绍了Spring Boot集群管理工具KafkaAdminClient使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
主要介绍了spring boot读取Excel操作,结合实例形式详细分析了spring boot解析、读取Excel相关操作技巧,需要的朋友可以参考下
简单的来说 Spring Boot 这个项目整合目前很多的流行的第三方框架,并且做了一系列的默认配置,我们无需在进行手动配置,直接拿过来直接使用! 接下来我们比较一下Spring mvc和 Spring Boot的开发过程 Spring mvc (1)...
spring-boot实现原理 读懂spring-boot预设条件是熟悉spring-framework实现原理 spring-boot特性 独立应用 嵌入式容器支持 提供starter依赖,实现自动配置 提供监控组件 构建模块 spring-boot-project依赖根 spring-...