Redian新闻
>
SpringBoot四大核心组件,你知道几个?

SpringBoot四大核心组件,你知道几个?

公众号新闻

来源:blog.csdn.net/u011909918/


# 前言


先透露一下,四大组件分别是:starter, autoconfigure, CLI 以及actuator。下面我们就来详细介绍一些他们有什么用。



# Spring Boot Starter


1.1 Starter的应用示例

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version></dependency>

在我们的Spring Boot项目种的POM文件中总会看到这两种依赖:


spring-boot-starter-xxx 和 xxx-spring-boot-starter。


这就是spring boot的四大组件之一的starter。


a、spring-boot-starter-thymeleaf



b、mybatis-spring-boot-starter



两种starter的区别就是 >>


  • 官方提供的starter是这样的:spring-boot-starter-xxx
  • 非官方的starter是这样的:xxx-spring-boot-starter


其中xxx就是我们想要依赖的组件或者jar包。上例就是我们spring boot用来引入thymeleaf引擎和mybatis框架所配置的依赖。引入之后通过简单的约定配置就可以正常使用。比如:


Thymeleaf引擎约定配置:

##前端引擎配置spring:  thymeleaf:    enabled: true    servlet:      content-type: text/html    mode: HTML    # 页面前缀    prefix: classpath:/templates/    # 后缀    suffix: .html


Mybatis约定配置:

mybatis:  mapper-locations: classpath:mapper/*.xml  #注意:一定要对应mapper映射xml文件的所在路径  type-aliases-package: com.hi.ld.vo.system  # 注意:对应实体类的路径  configuration:    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl


下面让我们来看看以前怎么配置thymeleaf。


1.2 Spring Boot之前的Thymeleaf和Mybatis应用


废话不多说,直接上代码:


1.2.1 Thymeleaf配置


a. 添加对应依赖:

<dependency>  <groupId>org.thymeleaf</groupId>  <artifactId>thymeleaf-spring5</artifactId>  <version>3.0.11.RELEASE</version></dependency><dependency>  <groupId>org.thymeleaf.extras</groupId>  <artifactId>thymeleaf-extras-java8time</artifactId>  <version>3.0.4.RELEASE</version></dependency>


b. bean配置

<bean id="templateResolver"       class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">  <property name="prefix" value="/WEB-INF/templates/" />  <property name="suffix" value=".html" />  <property name="templateMode" value="HTML5" /></bean>
<bean id="templateEngine" class="org.thymeleaf.spring4.SpringTemplateEngine"> <property name="templateResolver" ref="templateResolver" /></bean>
<bean class="org.thymeleaf.spring4.view.ThymeleafViewResolver"> <property name="templateEngine" ref="templateEngine" /></bean>


1.2.2 Mybatis配置


a. 添加对应依赖:

 <dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency>   <groupId>org.mybatis</groupId>   <artifactId>mybatis</artifactId> </dependency> <dependency>   <groupId>org.mybatis</groupId>   <artifactId>mybatis-spring</artifactId> </dependency>


b. bean配置


下面的第3, 4步骤就是Mybatis相关配置。第一步是引入资源配置。第二步是配置数据源

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 配置整合mybatis过程 --> <!-- 1.配置数据库相关参数properties的属性:${url} --> <context:property-placeholder location="classpath:jdbc.properties" />
<!-- 2.数据库连接池 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <!-- 配置连接池属性 --> <property name="driverClass" value="${jdbc.driver}" /> <property name="jdbcUrl" value="${jdbc.url}" /> <property name="user" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" />
<!-- c3p0连接池的私有属性 --> <property name="maxPoolSize" value="30" /> <property name="minPoolSize" value="10" /> <!-- 关闭连接后不自动commit --> <property name="autoCommitOnClose" value="false" /> <!-- 获取连接超时时间 --> <property name="checkoutTimeout" value="10000" /> <!-- 当获取连接失败重试次数 --> <property name="acquireRetryAttempts" value="2" /> </bean>
<!-- 3.配置SqlSessionFactory对象 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 注入数据库连接池 --> <property name="dataSource" ref="dataSource" /> <!-- 配置MyBaties全局配置文件:mybatis-config.xml --> <property name="configLocation" value="classpath:mybatis-config.xml" /> <!-- 扫描entity包 使用别名 --> <property name="typeAliasesPackage" value="com.soecode.lyf.entity" /> <!-- 扫描sql配置文件:mapper需要的xml文件 --> <property name="mapperLocations" value="classpath:mapper/*.xml" /> </bean>
<!-- 4.配置扫描Dao接口包,动态实现Dao接口,注入到spring容器中 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 注入sqlSessionFactory --> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> <!-- 给出需要扫描Dao接口包 --> <property name="basePackage" value="com.soecode.lyf.dao" /> </bean></beans>

1.2.3 小结


a、Starter 帮我们封装好了所有需要的依赖,避免我们自己添加导致的一些Jar包冲突或者缺少包的情况;


b、Starter帮我们自动注入了需要的Bean实例到Spring 容器中,不需要我们手动配置(这个可以说是starter干的,实际上并不是,这里埋个坑,下面解答);


所以: starter包的内容就是pom文件,就是一个依赖传递包。


# Spring Boot Autoconfigure


2.1 autoconfigure 简介


autoconfigure在我们的开发中并不会被感知,因为它是存在与我们的starter中的。所以我们的每个starter都是依赖autoconfigure的:



当然我们也可以把autoconfig的内容直接放在starter包里边。


a. spring-boot-autoconfigure:


注意:这里有个点,就是官网提供的configure大多数在spring-boot-autoconfigure包里边,并没有单独创建新包。



b、mybatis-spring-boot-autoconfigure



2.2 小结


autoconfigure内容是配置Bean实例到Spring容器的实际代码实现包,然后提供给starter依赖。所以说1.2.3中的b项所说的配置Bean实例到Spring容器中实际是autoconfigure做的,因为是starter依赖它,所以也可以说是starter干的。


所以:autocinfigure是starter体现出来的能力的代码实现


# Spring Boot CLI


Spring Boot CLI是一个命令行使用Spring Boot的客户端工具;主要功能如下:


  • 运行groovy脚本 => 官网2.1
  • 打包groovy文件到jar => 官网2.3
  • 初始化Spring Boot项目 => 官网2.4
  • 其他


先上个官网文档:

https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-cli.html


因为这个我们用的比较少,所以就不多赘述了。个人感觉比较流脾的功能就是命令行直接执行groovy脚本了。


# Spring Boot actuator


actuator是Spring Boot的监控插件,本身提供了很多接口可以获取当前项目的各项运行状态指标。


官网文档:

https://docs.spring.io/spring-boot/docs/2.4.0/reference/html/production-ready-features.html#production-ready


名词解释:


Endpoints: 需要监控的端点。参考官网第二节官网文档


可用的端点:



下方的是web工程的端点。


使用方法如下:


4.1 添加依赖

<dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-actuator</artifactId></dependency>


4.2 配置需要开启监控的端点

management:  endpoint:    health: # 开启健康监控端点      enabled: true    beans: # 开启Bean实例监控端点      enabled: true


4.3 启动服务并验证


4.3.1 启动结果



4.3.2 查看各个监控信息


浏览器访问(查看监控信息地址):http://localhost:9500/actuator



查看服务健康状态:



# 总结


本文主要介绍了Spring Boot的四大组件的作用,其中主要是starter和autoconfigure,另外的CLI和actuator用的并不多,所以没有仔细介绍。


END

精品资料,超赞福利,免费领


微信扫码/长按识别 添加【技术交流群
群内每天分享精品学习资料

关注回复:Java


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
快速定位SpringBoot接口超时问题的神器!一夜未归SpringBoot 整合 Groovy 脚本,实现动态编程Spring Boot+Netty+Websocket实现后台向前端推送信息SpringBoot 接口加密解密,新姿势!这样做优化,实现 0.059s 启动一个SpringBoot项目!COVID病毒很“险恶”,它所带来的这些后遗症,你知道几个?Spring Boot + Filter 实现 Gzip 压缩超大 json 对象,传输耗时大大减少灰蘑菇: 在王府墙头享受“冷夏”,却被“漂泊的心”捕获[评测]Corsair Vengeance RGB 32GB(2x16GB) DDR5 6600MHz C32 评测非常哇塞的 Spring Boot 性能优化长文上海中国画院的故事(续)性能爆表:SpringBoot利用ThreadPoolTaskExecutor批量插入百万级数据实测!SpringBoot + Flyway,自动化实现数据库版本控制爱彼皇橡50年,50个冷知识你知道几个?Spotlight Spring Savings 10月19日-11月6日打折图册(高清29页)联想ThinkBook 15.6寸笔记本(16GB,512GB,独显)751.86元!送鼠标!SpringBoot 3.0正式发布,有这几个新变化!SpringBoot超大文件上传,实现秒传Spring Boot 3.0 要来了,真心强!这16个有用的 SpringBoot 扩展接口,居然还有人不知道?TEAS | 西雅图曾叫“纽约”?老西雅图的Fun Facts,你知道几个?别再用 if 校验参数了,太Low!这才是专业的 SpringBoot 参数校验方式!GRE考试中反复出现的超高频短语,你知道几个?罗伯特格林的书——非虚构类(重度小说创作爱好者的强烈推荐+多图)SpringBoot 接口数据加解密技巧,so easy!SpringBoot 官方推荐,连接池,太快了!对话 Spring 大神:Spring 生态系统的新时代来了!关于净水器滤芯的四大误区,你中了几个?基于 Spring Boot + Vue 实现的可视化拖拽编辑的大屏项目虎年说说“虎牙”事腾讯发布数字孪生云,四大核心技术加速万物孪生SpringBoot+ElasticSearch 实现模糊查询,批量CRUD,排序,分页,高亮Spring Boot 3 将于 2022 年 11 月发布,延迟了对 Java 模块系统的支持SpringBoot + Prometheus + Grafana 打造可视化监控一条龙!
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。