动力节点王鹤老师最新springboot3视频
JDK8-19新增了不少新特性,这里我们把实际常用的新特性,给大家介绍一下。包括以下几个方面:
1.Java Record
2.Swich开关表达式
3.Text Block文本块
4.var 声明局部变量
5.sealed 密封类
任何时候创建Java类,都会创建大量的样板代码,我们可能做如下:
[if !supportLists]· [endif]每个字段的set,get方法
[if !supportLists]· [endif]公共的构造方法
[if !supportLists]· [endif]重写hashCode, toString(), equals()方法
Java Record避免上述的样板代码,如下特点:
[if !supportLists]· [endif]带有全部参数的构造方法
[if !supportLists]· [endif]public访问器
[if !supportLists]· [endif]toString(),hashCode(),equals()
[if !supportLists]· [endif]无set,get方法。没有遵循Bean的命名规范
[if !supportLists]· [endif]final类,不能继承Record,Record为隐士的final类。除此之外与普通类一样
[if !supportLists]· [endif]不可变类,通过构造创建Record
[if !supportLists]· [endif]final属性,不可修改
[if !supportLists]· [endif]不能声明实例属性,能声明static成员
IDEA创建新的Maven工程 Lession01-feature
现在能查看控制台输出:lisi = Student[id=1001, name=lisi,email=lisi@qq.com, age=20]zhangsan = Student[id=1002, name=zhangsan, email=lisi@qq.com, age=20]lisi.equals(zhangsan) = falselisi.name() = lisizhangsan.name() = zhangsan
Record是Java类,和普通Java类一样定义方法。下面定义方法concat,将姓名和年龄一起打印输出。我们创建普通的方法concat,将name和age连接为一个字符串输出。
Record中添加构造方法, 有三种类型的构造方法分别:是紧凑的,规范的和定制构造方法v紧凑型构造方法没有任何参数,甚至没有括号。v规范构造方法是以所有成员作为参数v定制构造方法是自定义参数个数
Java Record是创建不可变类且减少样板代码的好方法。Lombok是一种减少样板代码的工具。两者有表面上的重叠部分。可能有人会说Java Record会代替Lombok. 两者是有不同用途的工具。Lombok提供语法的便利性,通常预装一些代码模板,根据您加入到类中的注解自动执行代码模板。这样的库纯粹是为了方便实现POJO类。通过预编译代码。将代码的模板加入到class中。Java Record是语言级别的,一种语义特性,为了建模而用,数据聚合。简单说就是提供了通用的数据类,充当“数据载体",用于在类和应用程序之间进行数据传输。
多个Record可以组合定义, 一个Record能够包含其他的Record。我们定义Record为Customer,存储客户信息,包含了Address和PhoneNumber两个Record。
instanceof 能够与 Java Record一起使用。编译器知道记录组件的确切数量和类型。
step1:声明Person Record,拥有两个属性name和agepublic record Person(String name,Integer age) {}
yeild让switch作为表达式,能够返回值
语法变量= switch(value) { case v1: yield 结果值; case v2: yield 结果值;case v3,v4,v5.. yield 结果值 }
示例:yield返回值,跳出switch块public static void main(String[] args) {int week = 2;//yield是switch的返回值, yield跳出当前switch块String memo = switch (week){case 1: yield "星期日,休息";case 2,3,4,5,6: yield "工作日";case 7: yield "星期六,休息";default: yield "无效日期";};
System.out.println("week = " + memo);
}
无需中间变量,switch作为表达式计算,可以得到结果。yield是表达式的返回值
示例:多表达式,case 与yield 结合使用
语法:使用三个双引号字符括起来的字符串."""内容"""
例如:String name = """lisi"""; //Error 不能将文本块放在单行上String name= """lisi20"""; //Error 文本块的内容不能在没有中间行结束符的情况下跟随三个开头双引号
String myname= """zhangsan20"""; //正确
文本块定义要求:v文本块以三个双引号字符开始,后跟一个行结束符。v不能将文本块放在单行上v文本块的内容也不能在没有中间行结束符的情况下跟随三个开头双引号
三个双引号字符""" 与两个双引号""的字符串处理是一样的。与普通字符串一样使用。例如equals() , "==" , 连接字符串(”+“), 作为方法的参数等。
Text Block使用方式与普通字符串一样,==,equals比较,调用String类的方法。
step1:字符串比较与方法public void fun1() {String s1= """lisi""";String s2 = """lisi""";
//比较字符串boolean b1 = s1.equals(s2);System.out.println("b1 = " + b1);
//使用 == 的比较boolean b2 = s1 == s2;System.out.println("b2 = " + b2);
String msg = """hello world""";//字符串方法substringString sub = msg.substring(0, 5);System.out.println("sub = " + sub);}
step2:输出结果b1 = trueb2 = truesub = hello
String stripIndent():删除每行开头和结尾的空白String translateEscapes() :转义序列转换为字符串字面量1.2.3.5 转义字符新的转义字符"",表示隐士换行符,这个转义字符被Text Block转义为空格。通常用于是拆分非常长的字符串文本 ,串联多个较小子字符串,包装为多行生成字符串。
pring Boot 是目前流行的微服务框架 倡导 约定优先于配置” 其设 目的是 用来简化新 Spring 应用的初始化搭建以及开发过程。 Spring Boot 提供了很多核心的功 能,比如自动化配置 starter(启动器) 简化 Maven 配置、内嵌 Servlet 容器、应用监控等功能, 让我们可以快速构建企业级应用程序。
特性:1.创建独立的Spring 应用程序。2.嵌入式 Tomcat、 Jetty、 Undertow容器(jar)3.提供的 starters 简化构建配置(简化依赖管理和版本控制)4.尽可能自动配置 spring应用和第三方库5.提供生产指标,例如指标、健壮检查和外部化配置6.没有代码生成,无需XML配置
SpringBoot同时提供“开箱即用”,“约定优于配置”的特性。
开箱即用:Spring Boot应用无需从0开始,使用脚手架创建项目。基础配置已经完成。 集成大部分第三方库对象,无需配置就能使用。例如在Spring Boot项目中使用MyBatis。可以直接使用XXXMapper对象, 调用方法执行sql语句。约定优于配置:Spring Boot定义了常用类,包的位置和结构,默认的设置。代码不需要做调整,项目能够按照预期运行。比如启动类在根包的路径下,使用了@SpringBooApplication注解。 创建了默认的测试类。controller, service,dao应该放在根包的子包中。application为默认的配置文件。脚手架(spring提供的一个web应用,帮助开发人员,创建springboot项目)SpringBoot3 最小jdk17, 支持17-20.
Spring Boot理念“约定优于配置”,也可称为按约定编程
Spring框架:Spring Boot创建的是Spring应用,对于这点非常重要。也就是使用Spring框架创建的应用程序。这里的Spring是指 Spring Framework。 我们常说的Spring,一般指Spring家族,包括Spring Boot、Spring Framework 、Spring Data ,Spring Security,Spring Batch , Spring Shell, Spring for Apache Kafka ....。
2004年3月,Spring Framework1.0发布。2006年10 月,Spring Framework2.0发布。2006年后开始,国内项目渐渐的开始应用Spring框架,2009年12月,Spring3.0发布。这时国内已经比较注重Spring使用了。项目多数转移到Spring框架了。 我是在2007开始知道渐渐了解Spring框架。 那个时候用Struts或者就是jsp+servlet+jdbc比较多。当时研发项目也没什么烦恼, 就一,两个技术可以用。没什么可选择的。现在的框架,技术太多了。2017 年 09 月,Spring Framework5.0 发布。 2022年11月Spring Framework6.0发布。Spring的核心功能:IoC , AOP , 事务管理,JDBC,SpringMVC , Spring WebFlux,集成第三方框架MyBatis,Hibernate, Kafka , 消息队列...Spring包含SpringMVC, SpringMVC作为web开发的强有力框架,是Spring中的一个模块。
首先明确一点,Spring Boot和Spring Framework都是创建的Spring应用程序。Spring Boot 是一个新的框架,看做是Spring 框架的扩展,它消除了设置 Spring 应用程序所需的 XML配置,为更快,更高效的创建Spring应用提供了基础平台。Spring Boot能够快速创建基于Spring ,SpringMVC的普通应用以及Web项目。
SpringBoot是包含了Spring 、SpringMVC的高级的框架,提供了自动功能,短平快。能够更快的创建Spring应用。消除了Spring的XML配置文件,提供了开发效率,消除Spring应用的臃肿。避免了大量的样板代码。
项目规模大,服务多。要构建大型的分布式应用,保证应用的稳定,高效,不间断的提供服务。Spring Cloud是对分布式项目提供了,有力的支持。Spring Cloud是一系列框架的有序的组合,为开发人员提供了快速构建分布式系统中常用工具(例如,配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)。开发人员使用使用Spring Cloud这套框架和工具的集合可以快速建立实现分布式服务。这些框架需要使用Spring Boot作为基础开发平台。
脚手架是一种用在建筑领域的辅助工具,是为了保证建筑施工过程顺利进行而搭设的工作平台。软件工程中的脚手架是用来快速搭建一个小的可用的应用程序的骨架,将开发过程中要用到的工具、环境都配置好,同时生成必要的模板代码。脚手架辅助创建程序的工具,Spring Initializr是创建Spring Boot项目的脚手架。快速建立 Spring Boot项目的最好方式。他是一个web应用,能够在浏览器中使用。IDEA中继承了此工具,用来快速创建Spring Boot项目以及Spring Cloud项目。
一个工程一个模块的完整功实现。创建学生模块功能的Spring Boot项目Lession04-singlecom.example.模块名称+----Application.java 启动类+----controller 控制器包---StudentController.java---ScoreController.java+----service 业务层包---inter 业务层接口---impl 接口实现包+----repository 持久层包+----model 模型包---entity 实体类包---dto 数据传输包---vo 视图数据包
一个Spring Boot中多个模块。在根包下创建每个模块的子包, 子包中可以按“单一模块”包结构定义。创建包含多个功能的单体Spring Boot。 Lession05-crm (activity, sale, customer等模块)
pom.xml中的指定spring-boot-starter-parent作为坐标,表示继承Spring Boot提供的父项目。从 spring-boot-starter-parent 继承以获得合理的默认值和完整的依赖树,以便快速建立一个Spring Boot项目。 父项目提供以下功能:
[if !supportLists]· [endif]JDK的基准版本,比如<java.version>17</java.version>
[if !supportLists]· [endif]源码使用UTF-8 格式编码
[if !supportLists]· [endif]公共依赖的版本
[if !supportLists]· [endif]自动化的资源过滤:默认把src/main/resources目录下的文件进行资源打包
[if !supportLists]· [endif]maven的占位符为‘@’
[if !supportLists]· [endif]对多个Maven插件做了默认配置,如maven-compile-plugin,maven-jar-plugin
快速创建Spring Boot项目,同时能够使用父项目带来的便利性,可以采用如下两种方式:1.在项目中,继承spring-boot-starter-parent2.pom.xml不继承,单独加入spring-boot-dependencies依赖。
应用程序= 代码 + 数据(数据库,文件,url)应用程序的配置文件:Spring Boot允许在代码之外,提供应用程序运行的数据,以便在不同的环境中使用相同的应用程序代码。避免硬编码,提供系统的灵活性。可使用各种外部配置源,包括Java属性文件、YAML文件、环境变量和命令行参数。项目中经常使用properties与yaml文件,其次是命令行参数