第七章 SpringBoot框架

简介: SpringBoot简化Spring开发,核心功能包括starter起步依赖、自动配置和jar包运行。通过@SpringBootApplication实现自动化配置,支持多种外部配置方式,优先级由高到低为:命令行参数 > 系统属性 > properties > yml > yaml。可自定义starter实现模块化集成。

聊聊你对SpringBoot框架的理解 ?
SpringBoot是现在Spring家族最为流行的子项目,因为采用原始的SpringFramework框架开发项目,配置起来非常的繁琐,所以在Spring的4.0版本之后,Spring家族推出了SpringBoot框架,而Springboot就是来解决Spring框架开发繁琐的问题的,是用来简化spring框架开发的。
主要提供了这么三大块功能:
● starter起步依赖。springboot提供了各种各样的starter,在starter起步依赖中,就封装了常用的依赖配置,大大简化了项目引入依赖坐标的复杂度。
● 自动配置。 这也是springboot中最核心的功能,springboot可以根据特定的条件(当前环境是否引入对应的依赖、配置文件中是否有某个配置项、当前环境是否已经有了某个bean)来创建对象的bean,从而完成bean的自动配置。
● jar包方式运行。 springboot中内嵌了web服务器,所以我们开发的web项目,也可以直接打成一个jar包,直接基于java -jar 执行运行,非常的方便。
当然,这些呢,只是Springboot中提供的核心功能,还有其他的一些小功能,都是非常实用的 。
SpringBoot框架常见的starter你都用过哪些 ?
● spring-boot-starter-web (嵌入tomcat和web开发需要servlet与jsp支持)
● spring-boot-starter-aop (aop开发支持)
● spring-boot-starter-data-redis (redis支持)
● spring-boot-starter-data-elasticsearch (es支持)
● spring-boot-starter-amqp(消息队列支持)
● spring-boot-starter-data-mongodb (mongodb的支持)
● mybatis-plus-boot-starter(mybatis plus的支持)
● mybatis-spring-boot-starter(mybatis的支持)
那这些个starter,其实分为两类,一类是springboot官方提供的,命名都是:spring-boot-starter-xxxx;另一类是第三方框架提供的,命名都是:xxxx-spring-boot-starter。
Spring Boot配置的优先级?
SpringBoot项目中,可以在很多地方来配置项目中的配置项,那这里我主要说两个方面:一个是配置文件,一个是外部配置。
● 在springboot项目中,支持三类配置文件,分别是:application.properties、application.yml、application.yaml。 而这三类配置文件的优先级最高的是 application.properties,其次是 application.yml,最后是 application.yaml。
● 而外部配置呢,常用的有两种配置形式,一种是java系统属性,比如:-Dserver.port=9001;另一种是命令行参数,比如:--server.port=10010。而命令行参数的优先级要高于java系统属性。
● 而整体上,外部配置的优先级要高于项目内部的配置文件中的配置,所以整体来说配置文件的优先级由高到低的顺序为:
○ 命令行参数 > java系统属性 > application.properties > application.yml > application.yaml
SpringBoot自动配置的原理是什么?
嗯,好的,它是这样的。
其实SpringBoot自动配置的核心,是引导类上加的注解@SpringBootApplication 底层封装的一个注解,叫@EnableAutoConfiguration,这个注解才是实现自动化配置的核心注解。
该注解通过@Import注解导入对应的配置选择器,导入了一个ImportSelector接口的实现类。 而在这个类的内部呢,读取了该项目和该项目引用的Jar包中的classpath路径下META-INF/spring.factories文件中的所配置的类的全类名。
在这些配置类中所定义的Bean,会根据条件注解@Condition系列注解所指定的条件来决定是否需要将其导入到Spring容器中。
一般条件判断会有像@ConditionalOnClass这样的注解,判断是否有对应的class文件,如果有则加载该类,把这个配置类的所有的Bean放入spring容器中使用。
但是这里要说明一点哈,就是刚才提到的系统配置类声明的配置文件 META-INF/spring.factories, 在springboot3.0版本之后,就已经废除了,不会在这个文件中配置自动配置类了,替换成了一份新的配置文件,配置文件名比较长,记不住,后缀名为:XXxxxSpringAutoConfiguration.imports。
SpringBoot中如何自定义starter?
嗯,这个我知道,之前在项目中,我们封装过的,像阿里云OSS操作的starter。
● 首先,先说模块哈,自定义starter,我们通常会定义两个maven模块。
○ 一个是:xxx-spring-boot-starter ,这个模块主要负责管理依赖,最后项目中引入的就是这个模块。
○ 另一个是:xxx-spring-boot-autoconfigure,这个模块负责自动配置功能,所有的自动配置的核心代码,都定义在这个模块中。并在在starter模块中,还要引入autoconfigure这个模块的依赖。
● 然后再来说核心的autoconfigure模块的实现。
○ 第一步呢,就是要根据具体的需求,编写自动配置类。 基于@Configuration注解定义配置类,然后使用@Bean注解来声明bean,可以通过@Conditional系列的注解,根据条件决定是否声明这个bean。
○ 第二步,就是需要在META-INF/spring.factories配置文件中,根据规则配置自动配置类的全类名。 如果是SpringBoot3.x版本,则需要在新的配置文件,META-INF/spring/xxxx.SpringAutoConfiguration.imports文件中配置自动配置类的全类名。
基本上,就这么两块儿。定义好了之后,在各个项目中,就可以引入对应的starter直接使用了。

相关文章
|
数据可视化 Java BI
将 Spring 微服务与 BI 工具集成:最佳实践
本文探讨了 Spring 微服务与商业智能(BI)工具集成的潜力与实践。随着微服务架构和数据分析需求的增长,Spring Boot 和 Spring Cloud 提供了构建可扩展、弹性服务的框架,而 BI 工具则增强了数据可视化与实时分析能力。文章介绍了 Spring 微服务的核心概念、BI 工具在企业中的作用,并深入分析了两者集成带来的优势,如实时数据处理、个性化报告、数据聚合与安全保障。同时,文中还总结了集成过程中的最佳实践,包括事件驱动架构、集中配置管理、数据安全控制、模块化设计与持续优化策略,旨在帮助企业构建高效、智能的数据驱动系统。
564 1
将 Spring 微服务与 BI 工具集成:最佳实践
|
XML JSON Java
Spring框架中常见注解的使用规则与最佳实践
本文介绍了Spring框架中常见注解的使用规则与最佳实践,重点对比了URL参数与表单参数的区别,并详细说明了@RequestParam、@PathVariable、@RequestBody等注解的应用场景。同时通过表格和案例分析,帮助开发者正确选择参数绑定方式,避免常见误区,提升代码的可读性与安全性。
|
10月前
|
负载均衡 Java 应用服务中间件
Nacos注册中心
本文介绍了Nacos的安装部署、服务注册与发现、分级模型、负载均衡策略、权重控制、环境隔离及临时/持久化实例等核心功能,涵盖从本地启动到生产级配置的完整实践流程。通过实际操作演示了如何整合Spring Cloud Alibaba实现服务治理,并深入解析其架构设计与应用场景。
 Nacos注册中心
|
10月前
|
XML Java 数据库
SpringCloud工程部署启动
本文介绍SpringCloud微服务工程的搭建与部署,涵盖项目创建、模块配置、数据库导入及服务远程调用实现。通过RestTemplate完成服务间HTTP通信,解决跨服务数据获取问题,并引导读者理解微服务拆分与调用关系,为后续深入学习奠定基础。(239字)
 SpringCloud工程部署启动
|
10月前
|
安全 Java Maven
工程搭建
通过阿里云脚手架快速搭建Maven/Gradle工程,支持Spring Boot 2.7.6版本,导入IDEA后添加web依赖,编写接口并启动验证。后续可整合Spring Security实现安全控制,便于快速开发与部署应用。(239字)
工程搭建
|
10月前
|
存储 缓存 负载均衡
Nacos注册中心
本文介绍Nacos的安装部署、服务注册与发现、权重控制、集群隔离及临时/持久实例等核心功能,涵盖从环境搭建到高级配置的完整实践,助力微服务架构高效管理。
 Nacos注册中心
|
10月前
|
负载均衡 Java 应用服务中间件
微服务网关与配置中心
本文介绍了微服务架构下的网关路由与鉴权机制,重点讲解使用Spring Cloud Gateway实现请求路由、负载均衡及JWT身份校验。通过Nacos实现服务发现,网关统一处理前端请求,解决多入口问题,并在全局过滤器中实现用户鉴权,保障系统安全。
|
10月前
|
Java Nacos 数据库
微服务服务注册与发现
本课程以黑马商城项目为案例,学习微服务架构的构建与应用。内容涵盖单体架构与微服务架构的对比、分布式与云原生架构介绍,并通过Spring Cloud Alibaba技术栈实现服务拆分、Nacos服务注册与发现、OpenFeign远程调用等核心功能,最终完成从单体到微服务的项目重构与优化实践。
微服务服务注册与发现
|
安全 Java Apache
微服务——SpringBoot使用归纳——Spring Boot中集成 Shiro——Shiro 身份和权限认证
本文介绍了 Apache Shiro 的身份认证与权限认证机制。在身份认证部分,分析了 Shiro 的认证流程,包括应用程序调用 `Subject.login(token)` 方法、SecurityManager 接管认证以及通过 Realm 进行具体的安全验证。权限认证部分阐述了权限(permission)、角色(role)和用户(user)三者的关系,其中用户可拥有多个角色,角色则对应不同的权限组合,例如普通用户仅能查看或添加信息,而管理员可执行所有操作。
749 0
|
10月前
|
Java Go 开发工具
微服务是不是就是spring cloud?
微服务是一种将应用拆分为小型、独立服务的架构风格,强调单一职责、独立部署与技术异构;Spring Cloud 是基于 Spring Boot 的开发工具集,提供服务注册、配置管理等组件,助力微服务落地。前者是架构理念,后者是实现手段,二者关系如同“蓝图”与“施工工具”。

热门文章

最新文章