《Spring实战第五版》学习日记(二)
上午很早就把项目任务完成了,夹缝抽出来大概两个小时的时间继续看Spring实战,其实写学习日记并不是为了什么,只是想记录一下自己学习的一些心路历程,因为对于像我们这些小白来说,其实知识缺乏之外,缺乏更多的是如何像一个程序员去思考,如何像程序员一样去成长,因为你可以从多方面学习到知识,但是无法学习到学习成长的心路历程和方法,记录这个过程也就是为了未来返回头看的时候能多些反省和领悟。
Spring风景线
-
Spring 核心框架–主要提供核心容器和依赖注入框架,另外还提供一些其他的特性
比如说:Spring MVC是Spring Web的框架
-
SpringBoot 包括starter 依赖和自动配置,可以避免任何形式的显示配置,除非显示配置是绝对必要的
-
Springdata
-
Spring Security
-
SpringIntergration 和 Spring Bach
-
Spring Cloud
使用Spring的目的:
- Spring的目的主要是简化开发过程
- Spring Boot 构建在Spring之上,通过简化依赖管理,自动配置和运行时间洞察,使Sping 更简单易用
- Spring 应用程序可以使用Spring Initializr进行初始化,Spring Initializr是基于web应用,并且为大多数JAVA开发环境提供了原生支持。
- 在Spring 应用上下文中,组件(bean)既可以使用JAVA或XML显示声明,也可以通过组件扫描发现,还可以使用Spring Boot 自动配置功能实现自动化配置
开发web应用
-
构建领域类
就是类,数中所说
领域类包括taco设计、组成这些设计的配料,顾客以及顾客下的订单。
我的理解就是说:领域类就是基本的这些被抽象化的类,JAVA是面向对象性的语言,第一步一定是将事物抽象成类,然后才能通过类创建对象,这是JAVA面向对象的特性,在Spring中也是充分体现了这一特点
“想了半天什么是领域类,其实就是很简单的一些概念,就是很普通的一个JAVA的类。”
Ingredient领域类:
package tacos; import lombok.Data; import lombok.RequiredArgsConstructor; @Data @RequiredArgsConstructor public class Ingredient { private final String id; private final String name; private final Type type; public static enum Type{ WRAP,PROTEIN,VEGGIES,CHEESE,SAUCE } }
几点注意:
-
这里的话可以看到实例变量是final类型的,对于Final修饰的实例变量并不会在编译的时候自动赋值,因为Final类型的变量只能被赋值一次就无法被修改,所以正常来说这里要么就直接在语句之后直接进行赋值,要么就需要构建包含final修饰属性的构造方法。
-
所以这里爆红了如下图所示:
很囧很懵逼,再看书上的代码并没有构造方法,继续往下看就发现:
-
在Ingredient中不仅是缺少了构造方法,一般情况下抽象出来的类所需要的属性对应的getter和seeter方法,以及equals(),hashcode,toString这些很常用但是目前我很少定义的的方法都是缺少的。
没有这些方法的原因一部分是为了节省空间,另一部分是因为我们使用了Lombok的库。实际上类级别的@Data注解就是由Lombok提供的,它会告诉Lombok生成所有缺失的方法。使用Lombok库可以使得我们的代码更加的简洁明了。
而这里书上提到Lombok是一个依赖添加到idea,对于我使用的IDEA 来说直接添加插件Lombok即可,然后就会发现
本来爆红的地方就消失了,因为这里使用相当于构造了缺失的方法,但是这里我想的是,这样会不会反而让代码不那么清晰明了,因为有时我们会构建一些特殊方法体的构造方法,这样直接免去就会觉得很奇怪,其实这里是我多想了,如果有特殊的需要直接构建特殊的方法即可这里的话不使用也是可以的,只不过这样使用会使得编写代码的过程更加的简洁,但是对于我这种可能还没有完全适应Spring的小白来说就会有些意识上的转变困难。