简介
春天指南:PART 1 FOUNFATIONAL SPRING: 此处从第一个玉米饼云应用程序开始。
目录
1 Getting started with Spring
2 Developing web applications
3 Working with data
4 Securing Spring
5 Woring with configururation properties
1 Getting started with Spring
随着软件开发的发展,Spring框架也发生变化。以解决现代开发问题,包括为服务和响应式编程。Spring还着手通过引入Spring Boot来简化自己的开发模型。
随着软件开发的发展,Spring框架也发生变化。以解决现代开发问题,包括为服务和响应式编程。Spring还着手通过引入Spring Boot来简化自己的开发模型。
1.1-什么是Spring:
它提供了容积,为应用程序上下文用于创建和管理应用程序组件。这些组件或bean在Spring应用程序上下文中连接在一起构成一个完成的应用程序。
将bean连接在一起的行为称为依赖注入。依赖注入的应用程序不是让组件创建和维护它们所依赖的bean的生命周期,而是依赖于一个单独的实体(容器)来创建维护所有组件并将它们注入到需要它们的bean中。通常通过构造函数参数和属性访问器方法来完成。
引导Spring的应用程序上下文将bean连接在一起的方式是使用xml文件来描述组件及其他组件的关系。在Spring中基于Java的配置更为常见。好处是有更高的安全性和改进的可重构性。
1.2-初始化一个Spring应用:
Spring Initializr即是一个基于浏览器的Web应用程序,也是一个REST API。它可以生成一个SPring项目结构。然后编程人员使用任何想要的功能去充实它。
1.3-检查Spring项目结构:
这是一个类似maven的结构。选择将应用程序构建为可执行的JAR文件,而不是WAR。JAR是库和桌面UI应用程序的首选打包方式。JAR封装的选择是拥有云意识的选择。
1.4-编写Spring应用程序:
处理主页请求的控制器类
定义主页外观的视图模版
1.5-处理网络请求:
Spring带有一个强大的Web框架,称为Spring MVC。它的核心是控制器的概念。控制器是一个处理请求并以某种信息进行响应的类。对于面向浏览器的应用程序,控制器通过可选择的填充模型数据并将请求传递给视图来响应生成返回给浏览器的HTML。
1.6-测试控制器:
使用@WebMvcTest标记。
1.7-Spring Boot开发者工具:
代码更改是自动重新启动应用程序
浏览器目标资源更改
自动禁用模版缓存
1.8-核心Spring框架:
提供了核心容器和依赖注入框架,还提供了基本功能。其中包括Spring MVC,Spring Web框架。Spring MVC可用于创建非HTML输出的REST API。
在Spring 5.0.8中,添加了对响应式编程的支持,包括Spring WebFlux的新响应式Web框架。
1.9-Spring Cloud:
2 Developing web applications
显示数据。
显示数据。
2.1-显示信息:
在Spring Web应用程序中,获取和处理数据时控制器的工作。视图的工作时将数据呈现为HTML以显示在浏览器中。控制器将单独负责为视图提供成分。
2.2-建立域:
Lombok不是Spring库,但是它非常有用。使用Lombok,需要将其作为依赖项添加到项目中。此依赖项将为开发提供Lombok注释,并在运行时自动生成方法。
2.3-创建控制器类:
控制器是Spring MVC框架中的主要参与者。它们主要工作是处理HTTP请求,或者将请求交给视图以呈现HTML(浏览器显示),或者将数据直接写入响应政委(RESTful)。
使用视图为Web浏览器生成的内容(e.g):
处理请求路径为/design的HTTP GET的请求
建立成分清单
将请求和成分数据交给视图模版以呈现为HTML并发送请求的Web浏览器
2.4-处理请求:
例如GET请求:类级别的@RequestMapping与@GetMapping配对,指定接收到HTTP GET请求。
一旦成分列表准备好,接下来showDesignForm()将成分类型过滤列表。然后将成分分类型列表作为attibute添加到传递给showDesignForm()的模型对象。模型是一个在控制器和负责渲染的视图之间传递数据的对象。最终,放置在模型attribute中的数据被复制到servlet响应属性中,视图可以在其中找到它们。
3 Working with data
数据处理。
数据处理。
3.1-使用JDBC读写数据:
在处理关系数据时,JAVA开发人员有多种选择,最常见的两种选择为:JDBC和JPA。Spring JDBC支持根植于JDBC Template类。此类提供方法,开发人员可以通过该方法对关系数据库执行SQL操作,而无需使用JDBC的模版。
3.2-调整域以实现持久化:
将对象持久化到数据库时,最好有一个唯一标识对象的字段。除了id还需要有保存对象的日期和时间。使用Lombok在运行时自动生成访问器方法。除了声明id和createAt之外不需要其他声明。
3.3-使用JDBC Template:
通过Spring Boot的JDBC starter依赖项添加到构建中。
定义JDBC存储库:
将所有成分查询到成分对象的几何中
通过id查询单个成分
保存成分对象
3.4-定义模式和预加载数据:
Spring Boot在程序启动时会从类路径的根目录中执行data.sql文件。
4 Securing Spring
采取保护措施保护应用程序中的信息安全是重要的。
采取保护措施保护应用程序中的信息安全是重要的。
4.1-启用Spring Security:保护Spring应用程序
将Spring Boot安全启动器依赖添加到构建中。(这种依赖性是保护应用程序的唯一需要的东西,当应用程序启动时,自动配置会检测到Spring Security在类路径中,并会设置基本的安全设置。)所拥有的安全功能:
所有HTTP请求路径都需要身份验证
不需要特定的角色或权限
没有登陆页面
使用HTTP基本身份验证提示身份验证
只有一个用户
4.2-配置Spring Security:使用Java的Spring Security配置模版
Spring Security提供的用于配置用户存储的选项:
内存中的用户存储
基于JDBC的用户存储
LDAP支持的用户存储
自定义用户详细信息服务
4.3-基于JDBC的用户存储:
用户信息通常保存在关系数据库中。配置Spring Boot以针对使用JDBC保存在关系数据库中的用户信息进行身份验证。
覆盖默认用户查询:
当程序设计这自己设计的产讯替换默认SQL查询时,遵循查询的基本合同很重要。它们都将用户名作为唯一的参数。身份验证查询选择用户名,密码和启动状态。权限查询选择零个或多个包含用户名和授权权限的行。组权限查询选择零个或多个行,每行都有一个组ID,一个组名和一个权限。
使用编码密码:
关注身份验证查询,可以看到用户密码应该存储在数据库中。如果密码以纯文本形式存储,就会收到黑客 的窥探。可以使用PasswordEncoder接口解决此问题。
4.4-自定义用户认证:
定义用户域和持久性
注册用户
4.5-保护网络请求:
配置安全规则,WebSecurityConfigurerAdapter中的配置方法。
4.6-保护请求:
4.7-注销:
4.8-防止跨站请求伪造:
跨站请求伪造(CSRF)是一种常见的安全攻击。涉及用户在恶意设计的网页上填写代码,该网页自动代表通畅是攻击受害者的用户向另一个安全程序提交表单。
为了解决这一问题,应用程序可以在显示表单是生成一个CSRF令牌,将该令牌放在隐藏字段中,然后将其放在服务器中。提交表单后,令牌将于其余的表单数据一起发送回服务器。然后该请求被服务器拦截并与最初生成的令牌比较。如果令牌匹配,则允许请求继续,否则,该表单一定是恶意网站呈现的。
Spring Security内置了CSRF保护。
5 Woring with configururation properties
Spring Boot自动配置极大的简化了Spring应用程序的开发。值得注意的是,Spring Boot提供了一种配置attribute的方法。
Spring Boot自动配置极大的简化了Spring应用程序的开发。值得注意的是,Spring Boot提供了一种配置attribute的方法。
5.1-Spring中两种配置:这两种配置在同一个地方显式声明。
Bean连接:声明应用程序组建在Spring应用程序上下文中创建bean的配置,以及它们应该如何互相注入。
Attribute注入:在Spring应用程序上下文中设置bean值。
5.2-Spring抽象了attribute的来源:以便这些attributes的bean可以从Spring本身使用它们
Spring环境中的attribute源:
JVM系统attribute
操作系统环境变量
命令行参数
应用程序attribute配置文件
5.3-attribute源的attributes如何通过Spring环境抽象流向Spring bean:
例子:
希望应用程序的底层servlet容器在默认端口8080以外的某个端口上倾听请求,使用YAML(这里attribute配置以YAML为例)配置attribue时:
server:
port 7676
5.4-配置数据源:
通过配置attribute为程序的数据库配置URL和凭据更简单。而不是使用显式配置DataSource bean,虽然这也是可以实现的。
如果配置可用,DataSource bean将使用Tomcat的JDBC链接池进行池化。
5.5-配置嵌入式服务器:
设置attribute在嵌入式服务器中启用HTTPS。
5.6-配置日志记录:
大多数应用程序都提供某种形式的日志记录。默认情况下,Spring Boot通过Logback配置日志记录在INFO级别写入控制台。通过编辑logback.xml,可以完全控制应用程序的日志文件。
5.7-使用特殊attibute值:
声明时,不限于将它们的值声明为硬编码字符串和数值。还可以从其他配置属性中获取它们的值。
相关阅读:
Walls, C., 2022. Spring in action. Simon and Schuster.



