`
eric_weitm
  • 浏览: 243551 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring4系列二 spring boot 解析

 
阅读更多

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-boot-starter-parent简介

    解析spring-boot-starter-parent简介 spring-boot-starter-parent是Spring Boot框架中的一个基础依赖项管理工具,主要用于管理项目中的依赖项版本。通过继承spring-boot-dependencies,spring-boot-starter-parent...

    Spring Boot面试题(92题)

    Spring Boot还提供了应用监控功能,通过一系列端点进行健康检查和服务监控。它还支持基于环境的配置,允许开发者通过-Dspring.profiles.active参数切换不同环境的配置文件。例如,可以指定-Dspring.profiles.active=...

    spring-boot-2.7.0.zip源码

    《Spring Boot 2.7.0 源码解析与深度探索》 Spring Boot作为Java开发中的一个核心框架,以其便捷的起步配置、自动化配置和一站式的解决方案深受开发者喜爱。当我们深入研究Spring Boot 2.7.0的源码时,可以更深刻地...

    果子学院Spring boot源码解析

    《果子学院Spring Boot源码解析》是一套深入学习Spring Boot源码的教程,旨在帮助开发者深入了解这个流行的Java开发框架的内部工作机制。Spring Boot简化了Java应用的初始搭建以及开发过程,它集成了大量常用的第三...

    Spring-boot jar Spring-boot所需jar包

    Spring Boot 是一个由 Pivotal 团队开发的 Java 框架,它极大地简化了创建独立、生产级的基于Spring的应用程序的过程。这个框架的主要目标是让你能够快速地启动和运行你的应用,无需大量的配置。Spring Boot 基于 ...

    Spring Boot源码(spring-boot-2.6.2.zip)

    Spring Boot 2.6.2是该框架的一个稳定版本,提供了一系列增强的功能和改进。在这个版本中,我们将深入探讨Spring Boot的核心特性、工作原理以及如何通过源码来理解其内部机制。 首先,Spring Boot的核心理念是...

    Spring技术内幕:深入解析Spring架构与设计原理.pdf

    Spring技术内幕:深入解析Spring架构与设计原理 Spring技术内幕 Spring是一个基于Java的开源框架,旨在简化Java企业应用的开发。Spring的目标是提供一个简洁、灵活、可扩展的框架,以帮助开发者快速构建企业级...

    spring-boot-cli下载

    4. `spring config`:用于处理配置属性,如读取和解析YAML或Properties文件。 在`spring-2.0.0.M1`目录中,包含了Spring Boot CLI的可执行文件(如`spring`或`spring.bat`,取决于你的操作系统),这些文件让你能够...

    基于Spring Boot的二维码生成与解析接口.zip

    本项目是关于"基于Spring Boot的二维码生成与解析接口",将重点探讨如何在Spring Boot环境中实现二维码的生成与解码功能。 首先,二维码(Quick Response Code)是一种二维条形码,能够存储更多的数据,包括URL、...

    spring笔试题选择和简答题和springboot+cloud选择题和简答题

    Spring Boot+Spring Cloud 试题解析 Spring Boot 是一个基于 Java 的框架,用于构建独立的、生产级别的基于 Spring 的应用程序。Spring Cloud 是一个基于 Spring Boot 的微服务架构框架,提供了在分布式系统中服务...

    spring boot实战.pdf高清无水印

    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 2+Thymeleaf企业应用实战》_杨恩雄.pdf

    Spring Cloud是基于Spring Boot的一系列框架,它们使得开发人员可以快速构建分布式系统中的一些常见模式(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话和...

    Spring Boot实战与原理分析视频课程包含14-18

    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...

    spring-boot spring-security-oauth2 完整demo

    《Spring Boot、Spring Security与OAuth2的完整示例解析》 在现代Web开发中,安全性是不可忽视的重要一环。Spring Boot、Spring Security和OAuth2是Java生态系统中用于构建安全Web应用的三大利器。本篇文章将围绕...

    spring+boot+cookbook

    4. **Starter POMs**:Spring Boot通过一系列的Starter POMs(如spring-boot-starter-web、spring-boot-starter-data-jpa等)来简化依赖管理,这些POMs包含了开发特定功能所需的最小依赖集合。 5. **Actuator**:...

    Spring Boot-实战

    2. **核心概念**:深入解析Spring Boot的自动配置原理,以及如何自定义配置以满足特定需求。 3. **Web开发**:包括使用Spring MVC开发RESTful API,处理HTTP请求,使用模板引擎(如Thymeleaf)进行视图渲染,以及...

    jasypt-spring-boot-starter 3.0.5依赖的pom及jar

    《深入解析jasypt-spring-boot-starter 3.0.5依赖的POM与JAR》 在Java开发领域,构建和管理依赖是至关重要的环节。jasypt-spring-boot-starter是一个流行的安全库,它允许开发者在Spring Boot应用中轻松地实现加密...

    spring-boot源码

    8. **Web MVC**:Spring Boot对Spring MVC进行了预配置,包括静态资源处理、错误页面配置、视图解析等。`WebMvcConfigurer`接口提供自定义MVC行为的机会。 9. **Data访问**:Spring Boot支持JPA、Hibernate、...

    spring-boot中文API文档

    Spring Boot是Java开发中的一个流行框架,它简化了创建独立的、生产级别的基于Spring的应用程序。这个"spring-boot-中文参考手册.pdf"是为开发者提供的一份详细且全面的中文API文档,旨在帮助中文使用者更好地理解和...

    spring-boot-starter-log4j2

    本文将深入探讨Spring Boot集成的Log4j2框架,解析其工作原理、配置方式以及实际应用。 一、Log4j2简介 Log4j2是Apache基金会开发的一个日志处理框架,它是Log4j的升级版,提供了更高效的性能和丰富的功能。Log4j2...

Global site tag (gtag.js) - Google Analytics