2.1 展现信息
Spring Web应用中,获取和处理数据是控制器的任务,将数据渲染到HTML中并在浏览器中展现是视图的任务。为了支撑taco的创建页面,需要构建如下组件:
- 用来定义taco配料属性的领域类
- 用来获取配料信息并将其传递至视图的Spring MVC控制器类
- 用来在用户的浏览器中渲染配料列表的视图模版
2.1.1 构建领域类
在我们的Taco Cloud中,领域对象包括Taco设计,组成这些设计的配料,顾客,以及顾客下的订单。
定义配料如下:
Spring Web应用中,获取和处理数据是控制器的任务,将数据渲染到HTML中并在浏览器中展现是视图的任务。为了支撑taco的创建页面,需要构建如下组件:
在我们的Taco Cloud中,领域对象包括Taco设计,组成这些设计的配料,顾客,以及顾客下的订单。
定义配料如下:
唯一不变的就是变化 - 希腊哲学家拉克利特(heraclitus)
Spring框架在不断的变化,以解决现代应用开发中的问题,微服务,反应式编程,Spring Boot等等。
任何实际的应用程序都是由很多组件组成的,每个组件负责整个应用功能的一部分,这些组件需要与其他的应用元素进行协调以完成自己的任务。当程序运行时,需要以某种方式创建并引入这些组件。
Spring的核心是提供了一个容器(Container),通常称为Spring应用上下 文(Spring application context),会创建和管理应用组件--bean, 会在Spring应用上下文中装配在一起,从而形成一个完整的应用程序。
将bean装配在一起的行为是通过一种基于依赖注入(Dependency Injection, DI)的模式实现的。此时,组件不会再去创建他所依赖的组件并管理他们的生命周期,使用依赖注入的应用依赖于单独的实体(容器)来创建和维护所有的组件,并将其注入到需要他们的bean中。通常,这是通过构造器参数和属性访问方法来实现的。
以前Spring通过一个或多个XML文件来进行依赖的定义,现在一般通过基于注解的方式。
这里我认为无论通过那种方式,只要达到目的即可,没必要学习太多创建项目的方式。
所以,不同于书中介绍,我们使用Intellij Idea来创建

创建好之后,等待依赖下载完毕

探索构建规范
<packaging>, 这里将应用构建成了一个可执行的jar文件,而不是war文件,因为所有的Java云平台都能够运行可执行的JAR文件,所以Spring Initializr基于云思维,默认都是使用JAR打包方式,当然你可以修改。
<parent>,<version>表名项目以 spring-boot-starter-parent作为其父POM,这个父POM为Spring项目常用的一些库提供了依赖管理。
<dependencies>元素下面声明了四个依赖,这些大都是我们之前创建项目的时候选择的
也可以看到好几个是starter依赖(Spring Boot Starter依赖本身不包含库代码,传递性的拉取其他库),其好处:
最后 pom.xml里面还有一个Spring Boot插件:
引导应用
我们通过可执行的JAR文件的形式来运行应用,所以需要有一个主类,它将会在JAR运行的时候被执行。同时还需要一个最小化的Spring配置,以引导该应用。这就是TacoCloudApplication所做的事儿。
TacoCloudApplication的 @SpringBootApplication是一个组合注解:
@SpringBootConfiguration
@Configuration的特殊形式@EnableAutoConfiguration:启用Spring Boot的自动配置@ComponentScan:启用组件扫描TacoCloudApplication的main方法,是JAR文件执行的时候要运行的方法,这里会调用 SpringApplication 的静态run方法,后者会真正执行引用的引导过程,创建Spring应用上下文,传递的参数:
测试应用
这个测试类会执行必要的检查,确保Spring应用上下文能够成功加载
目标: