Day01:Spring Boot概述

引言:

使用maven和Spring Boot的区别

1、maven:JT案例中,使用Maven同意管理jar包,jt-parent父工程有三个子工程,pom.xml的使用极其不方便,需要考虑项目的先后顺序,jar包冲突问题需要注意及解决。

【梦想:有人帮我创建parent父工程】

Spring Boot:自己定义了parent工程,把主流公用jar包管理起来。

2、maven:基于SSM框架,xml配置文件有:mybatis-config.xml、applicationContext*.xml、springmvc-config.xml、web.xml,非常多的配置,还要注意配置的放置位置。

【梦想:不需要xml配置】

Spring Boot:通过“约定大于配置”和注解,可以少写很多的代码,如:db属性,application.yml或yaml,比属性文件表现方式更好,kv,key树形结构。减少配置量

3、maven:部署需要编译、打包、发布(install),外部需要tomcat中间件,Maven Tomcat插件+配置命令。
启动慢,需要配置jdk,javaweb。

【梦想:运行方式更加简洁】

springboot:使用注解@SpringBootApplication,使用SpringApplication.run();
开发效率更高更快,降低产生错误的几率。

总结:Spring Boot的四点优势:

1.开发简单

提供了丰富的解决方案,快速集成各种解决方案提升开发效率。

2.配置简单

提供了丰富的Starters,集成主流开源产品。

3.部署简单

内嵌启动容器,命令可启动项目,结合Jenkins、Docker自动化运维,易于项目实现。

4.监控简单

自带监控组件,使用Actuator起送监控服务各项状态。

一、Spring Boot核心:约定大于配置

约定优于配置(Convention Over Configuraion)也被称为约定编程,是一种软件设计范式。
可以减少开发决定数量,不丧失灵活性。
开发人员仅需要规定应用中不符合约定的部分。在Spring Boot JPA就是约定大于配置是实现之一。不关注表结构,约定类名就是表名,属性名就是字段名,String对应varchar,long对应bigint。只要需要一些特殊的要求属性,才需要进行单独配置。按照这个约定可以大大减少工作量。

让springboot项目简单易于上手的不仅仅靠“约定大于配置”,还因为众多的“Starters”。

二、Starters的优势

Starters有两个核心组件,自动配置代码提供自动配置模块及其他有用依赖
这意味着:

  • 当项目中引入了某个starter,便默认拥有了使用此软件的能力。除非需要特定配置,一般情况下仅需少量配置或不需要配置便可以使用组件功能。

springboot由众多starter组成。【在传统Maven项目中通常需要将层或组件拆分来管理用来依赖复用】在springboot项目中我们则可以创建自定义spring boot starter来达到此目的。

【springboot拥有强大融合社区开源软件的能力,整合了主流的开源软件形成了一系列的Starter,让我们有了一致的编程体验来集成各种软件,spring boot在集成的时候做了大量的优化,让我们在集成的时候只需要很少的配置和代码就可以完成。】

三、Spring、Spring Boot、Spring Cloud的关系

Spring(IoC、AOP)-》Spring MVC-》Spring Boot-》Spring Cloud
是为了更好的使用Spring。Spring Boot的“约定大于配置”理念,重构了Spring的使用,让Spring后续更有发展和生命力。

【Spring Cloud是一系列框架的有序集合,它利用SpringBoot的开发便利性,巧妙地简化了分布式系统基础设施的开发。服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用SpringBoot的风格做到一键启动和部署。】

Spring Cloud为了解决微服务架构中服务治理而提供的具备一系列功能的开发框架,并且其基于Spring Boot开发。
Spring Cloud利用Spring Boot特性整合了开源应用中的优秀组件,提供了一套在微服务架构中服务治理的解决方案、

四、基础环境

  1. 最低JDK8
  2. 依赖组件升级,同时也升级了部分依赖的第三方组件:Jetty9.4,Tomecat8.5,FlyWay5,Hibernate5.2,Gradle3.4,Thymeleaf3.0
  3. 默认软件替换和优化【默认连接从Tomcat切换到HikariCp,HikariCP是一个高性能的JDBC连接池,Hikari是日语“光”的意思。其号称是Java业界最快的数据库连接池,官网提供了c3p0,dbcp2,tomcat,vibur和hikari等数据库连接池的性能对比。】
  4. 关于Hikari性能突出的官网说明:

字节码简化:优化代码,直到编译后的字节码最少,这样CPU缓存可以加载更多的程序代码;
优化代理和连接器:减少代码,例如HikariCP的Statement Proxy只有100行代码;
自定义数组类型FastStatementList代替ArrayList:避免每次get()调用都进行range check,避免调用remove()时从偶到位扫描;
自定义集合类型(CurrentBag):提高并发读写的效率;
其他针对BoneCP缺陷的优化,比如对于耗时超过一个CPU时间片的方法调用的研究。

  • Security:Spring Security是Spring社区的一个顶级项目,也是SpringBoot官方推荐使用的Security框架。
  • OAuth 2.0:它是一个授权框架,或称为授权标准,它可以使第三方应用程序或客户端获得对HTTP服务(Google、Github)上用户账户信息的有限访问权限。通过用户身份验证委派给托管用户账户的服务以及授权课客户端访问用户进行工作。
  • Mecrometer是一种监控指标的度量类库,可以让你在没有供应商锁定的情况下对JVM的应用程序代码进行调整。【Springboot2.0增强了对其的集成,不再提供自己的指标API,依靠micrometer.io来满足所有应用程序监视需求。】
    在这里插入图片描述在这里插入图片描述
    集成后提供JVM指标(包括CPU、内存、线程和GC)、Logback、Tomecat、SpringMVC&提供RestTemplate。
  • Redis默认使用Lettuce。【Redis方面默认引入了Lettuce,代替了之前的Jedis作为底层的Redis连接方式】lettuces 是一个可伸缩的线程安全的Redis客户端,用于同步、异步和反应使用。多个线程可以共享同一个RedisConnection,它利用优秀Netty NIO框架来高效滴管理多个连接,支持先进的Redis功能,如Sentinel、集群、流水线、自动重新连接和Redis数据模型。

在这里插入图片描述

五、新技术的引用[部分]

  • 支持HTTP/2【http/2的第二代http协议,Springboot的web容器选择中tomcat、undertow和jety均已支持http/2】
  • 在这里插入图片描述
  • 嵌入式Netty服务器:webflux不依赖于servletAPI,我们现在可以首次为netty作为嵌入式服务器提供支持。
  • Kotlin支持,提供runApplication,一个使用kotlin运行springboot应用程序的方法。
  • JOOQ的支持:JOOQ是基于Java访问关系型数据库的工具包,JOOQ既吸取了传统ORM操作数据的简单性和安全性,又保留了原生SQL的灵活性。更像是介于ORMS和JDBC的中间层。
  • 支持Quartz【???】
  • 响应式编程
    在这里插入图片描述
    它有一个全新的非阻塞模式的函数式Reactive Web框架,可以用来构建异步的、非阻塞的、事件驱动的服务,在伸缩性方面表现的非常好。
    非阻塞的关键预期好处是能够以小的固定数量的线程和较少的内存进行扩展。
    在服务器webFlux支持两种不同的编程模型:
    1、基于注解的@Controller和其他注解也支持SpringMVC
    2、Funcional、Java8 lambda风格的路由和处理

在这里插入图片描述

  • 需要指定主键的自增策略
@Id
@GeneratedValue(strategy=GenerationTpye.IDENTITY)
private long id;
  • 分页组件PageRequest变化,建议使用如下方式来构建分页信息
Pageable pageable = PageRequest.of(page,size,Sort.by(Sort.Direction.ASC,"id"));

六、依赖环境、项目结构介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值