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
相关推荐
4. `spring config`:用于处理配置属性,如读取和解析YAML或Properties文件。 在`spring-2.0.0.M1`目录中,包含了Spring Boot CLI的可执行文件(如`spring`或`spring.bat`,取决于你的操作系统),这些文件让你能够...
解析spring-boot-starter-parent简介 spring-boot-starter-parent是Spring Boot框架中的一个基础依赖项管理工具,主要用于管理项目中的依赖项版本。通过继承spring-boot-dependencies,spring-boot-starter-parent...
Spring Boot还提供了应用监控功能,通过一系列端点进行健康检查和服务监控。它还支持基于环境的配置,允许开发者通过-Dspring.profiles.active参数切换不同环境的配置文件。例如,可以指定-Dspring.profiles.active=...
《Spring Boot 2.7.0 源码解析与深度探索》 Spring Boot作为Java开发中的一个核心框架,以其便捷的起步配置、自动化配置和一站式的解决方案深受开发者喜爱。当我们深入研究Spring Boot 2.7.0的源码时,可以更深刻地...
《果子学院Spring Boot源码解析》是一套深入学习Spring Boot源码的教程,旨在帮助开发者深入了解这个流行的Java开发框架的内部工作机制。Spring Boot简化了Java应用的初始搭建以及开发过程,它集成了大量常用的第三...
Spring Boot 是一个由 Pivotal 团队开发的 Java 框架,它极大地简化了创建独立、生产级的基于Spring的应用程序的过程。这个框架的主要目标是让你能够快速地启动和运行你的应用,无需大量的配置。Spring Boot 基于 ...
Spring Boot 2.6.2是该框架的一个稳定版本,提供了一系列增强的功能和改进。在这个版本中,我们将深入探讨Spring Boot的核心特性、工作原理以及如何通过源码来理解其内部机制。 首先,Spring Boot的核心理念是...
Spring技术内幕:深入解析Spring架构与设计原理 Spring技术内幕 Spring是一个基于Java的开源框架,旨在简化Java企业应用的开发。Spring的目标是提供一个简洁、灵活、可扩展的框架,以帮助开发者快速构建企业级...
本项目是关于"基于Spring Boot的二维码生成与解析接口",将重点探讨如何在Spring Boot环境中实现二维码的生成与解码功能。 首先,二维码(Quick Response Code)是一种二维条形码,能够存储更多的数据,包括URL、...
Spring Boot+Spring Cloud 试题解析 Spring Boot 是一个基于 Java 的框架,用于构建独立的、生产级别的基于 Spring 的应用程序。Spring Cloud 是一个基于 Spring Boot 的微服务架构框架,提供了在分布式系统中服务...
Spring Cloud是基于Spring Boot的一系列框架,它们使得开发人员可以快速构建分布式系统中的一些常见模式(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话和...
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 运行应用程序...
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...
4. **Starter POMs**:Spring Boot通过一系列的Starter POMs(如spring-boot-starter-web、spring-boot-starter-data-jpa等)来简化依赖管理,这些POMs包含了开发特定功能所需的最小依赖集合。 5. **Actuator**:...
2. **核心概念**:深入解析Spring Boot的自动配置原理,以及如何自定义配置以满足特定需求。 3. **Web开发**:包括使用Spring MVC开发RESTful API,处理HTTP请求,使用模板引擎(如Thymeleaf)进行视图渲染,以及...
8. **Web MVC**:Spring Boot对Spring MVC进行了预配置,包括静态资源处理、错误页面配置、视图解析等。`WebMvcConfigurer`接口提供自定义MVC行为的机会。 9. **Data访问**:Spring Boot支持JPA、Hibernate、...
Spring Boot是Java开发中的一个流行框架,它简化了创建独立的、生产级别的基于Spring的应用程序。这个"spring-boot-中文参考手册.pdf"是为开发者提供的一份详细且全面的中文API文档,旨在帮助中文使用者更好地理解和...
《Spring Boot、Spring Security与OAuth2的完整示例解析》 在现代Web开发中,安全性是不可忽视的重要一环。Spring Boot、Spring Security和OAuth2是Java生态系统中用于构建安全Web应用的三大利器。本篇文章将围绕...
本文将深入探讨Spring Boot集成的Log4j2框架,解析其工作原理、配置方式以及实际应用。 一、Log4j2简介 Log4j2是Apache基金会开发的一个日志处理框架,它是Log4j的升级版,提供了更高效的性能和丰富的功能。Log4j2...
《深入解析jasypt-spring-boot-starter 3.0.5依赖的POM与JAR》 在Java开发领域,构建和管理依赖是至关重要的环节。jasypt-spring-boot-starter是一个流行的安全库,它允许开发者在Spring Boot应用中轻松地实现加密...