Spring实战(第五版)学习笔记

第一章 Spring起步

  • 起初最常见的应用形式是基于浏览器的Web应用,后端由关系型数据库作为支撑。
  • 现在感兴趣的还包括如何开发面向云的由微服务组成的应用
  • 还有反应式编程,致力于通过非阻塞操作提供更好地扩展性并提升性能

1.1 什么是Spring

任何实际的应用程序都是由很多组件组成的,当应用程序运行时,需要以相应的方式创建并引入对应的组件。
Spring的核心是提供了一个容器(container),也可称为Spring应用上下文(Spring application context),通过容器来创建和管理应用组件,这些组件也可以称为bean,会在容器中装配在一起,从而形成一个完整的应用程序。

  • 刚开始,指导Spring应用上下文将bean装配在一起的方式是使用一个或多个xml文件(描述一个组件以及它们与其他组件的关联关系)。
  • 后来基于Java的配置更为常见,@Configuration注解会告知Spring这是一个配置类,会为Spring应用上下文提供bean。这个配置类的方法使用@Bean注解进行标注,表名这些方法所返回的对象会以bean的形式添加到Spring的应用上下文中(默认情况下,这些bean所对应的bean ID与定义他们的方法名称是相同的)

基于Java配置比基于xml配置有更多的额外收益,不过两者均为显示配置,所以这两种配置方式只有在Spring不能进行自动配置时才会考虑使用。
在Spring技术中,自动配置(autoconfiguration)起源于所谓的自动装配(autowiring)和组件扫描(component scanning)。借助组件扫描技术,Spring能够自动发现应用类路径下的组件,并将它们创建成Spring应用上下文中的bean。借助自动装配技术,Spring能够自动为组件注入它们所依赖的其它组件。Spring Boot是Spring框架的扩展,自动配置(autoconfiguration)最为人所熟知。

1.2 初始化Spring应用

1.2.2 检查Spring项目的结构

mnvw和mnvw.cmd:这是Maven包装器(wrapper)脚本。借助这些脚本,即便电脑上没有安装Maven,也可以构建项目。
在pom.xml文件中,packaging选择将应用构建成一个可执行的JAR文件,这是默认方式,也可自行修改成WAR文件。

	<groupId>lml</groupId>
	<artifactId>blog</artifactId>
	<version>3.0.2</version>
	<packaging>jar</packaging>

Spring Boot的引导类

package com.lml;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

// 整个应用的引导类

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

其中,@SpringBootApplication注解明确表明这是一个Spring Boot应用,同时这是一个组合注解,组合了其它3个注解

  • @SpringBootConfiguration:将该类声明为配置类。尽管这个类目前还没有太多的配置,但是可以按需添加基于Java的Spring框架配置,这个注解实际上是@Configuration注解的特殊形式。
  • @EnableAutoConfiguration:启用SpringBoot的自动配置,这个注解会告诉Spring Boot自动配置它认为我们会用到的组件。
  • @ComponentScan:启用组件扫描。这样我们能够通过像@Component、@Controller、@Service这样的注解声明其他类,Spring会自动发现它们并将它们注册为Spring应用上下文中的组件。

其中的main()方法会调用Application中静态的run()方法,后者会真正执行应用的引导过程,也就是创建Spring的应用上下文。在传递给run()的两个参数中,一个是配置类,另一个是命令行参数。尽管传递给run()的配置类不一定要和引导类相同,但这是最便利和最典型的做法。

1.3 编写Spring应用

1.3.1 处理Web请求

Spring自带一个强大的Web框架,名为Spring MVC。Spring MVC的核心是控制器(controller)。控制器是处理请求并以某种方式进行信息响应的类。在面向浏览器的应用中,控制器会填充可选的数据模型并将请求传递给一个视图,以便于生成返回给浏览器的HTML。
@Controller、@Component、@Service、@Repository等注解的主要目的是让组件扫描将这个类识别为一个组件,带有这个注解时Spring的组件扫描功能会自动发现它,并创建一个相应的类实例作为Spring应用上下文中的bean。

1.3.2 定义视图

使用thymeleaf模版需要先在pom.xml文件中添加相应依赖

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

然后在新建的html头文件中,添加thymeleaf的网址,否则使用thymeleaf语法时,会报红

	<html lang="en" xmlns:th="http://www.thymeleaf.org">

浏览器自动刷新和禁用模板缓存

在这里插入图片描述
在这里插入图片描述
完成上述两步操作后,在application.properties配置文件中禁用模板缓存即可

	# 禁用模版引擎缓存
	spring.thymeleaf.cache=false

第二章 开发Web应用

2.1 展现信息

在Spring Web应用中,获取和处理数据是控制器的任务,而将数据渲染到HTML中并在浏览器中展现则是视图的任务。

2.1.1 构建领域类

	<dependency>
		<groupId>org.projectlombok></groupId>
		<artifactId>lombok</artifactId>
		<optional>true</optional>
	</dependency>

2.1.2 创建控制器类

Model对象负责在控制器和展现数据的视图之间传递数据。

2.1.3 设计视图

使用thymeleaf模版需要在html文件的标签中添加以下内容,否则使用相应标签时,th字段会报红

<html xmlns:th="http://www.thymeleaf.org">
  • "th:text"是Thymeleaf命名空间中的属性
  • ${ }会告诉Thymeleaf模板要使用某个请求属性中的值。

2.2 处理表单提交

@Data注解

2.3 校验表单输入

2.3.1 声明校验规则

@NotBlank
正则表达式

2.3.2 在表单绑定的时候执行校验

@Valid

2.3.3 展现校验错误

第三章 使用数据

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

念雪、难忘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值