`
eric_weitm
  • 浏览: 242132 次
  • 性别: 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-cli下载

    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-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的二维码生成与解析接口.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 2+Thymeleaf企业应用实战》_杨恩雄.pdf

    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实战与原理分析视频课程包含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+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)进行视图渲染,以及...

    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 spring-security-oauth2 完整demo

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

    spring-boot-starter-log4j2

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

    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应用中轻松地实现加密...

Global site tag (gtag.js) - Google Analytics