《Spring Guides系列学习》guide16 - guide20

news2024/11/28 12:38:12

要想全面快速学习Spring的内容,最好的方法肯定是先去Spring官网去查阅文档,在Spring官网中找到了适合新手了解的官网Guides,一共68篇,打算全部过一遍,能尽量全面的了解Spring框架的每个特性和功能。
在这里插入图片描述
接着上篇看过的guide15,接着往下看。

guide16、Consuming a RESTful Web Service with AngularJS

主要讲的编写一个angularJS的客户端,该客户端使用基于restful web服务。
略过。


guide17、Enabling Cross Origin Requests for a RESTful Web Service

跨域是什么意思?https://segmentfault.com/a/1190000040485198

首先一个url是由:协议、域名、端口 三部分组成。(一般端口默认80)

如:https://blog.moonlet.cn:80

当一个请求url的协议、域名、端口三者之间的任意一个与当前页面url不同即为跨域。

跨源资源共享(CORS)是由大多数浏览器实现的W3C规范,允许您灵活地指定什么样的跨域请求被授权,而不是使用一些不太安全和不太强大的策略,如IFRAME或JSONP。详细可见:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS

Guide涉及注解:

@CrossOrigin:是用来处理跨源资源共享(CORS)的注解。

注解参数解析:

1、 value:指定允许请求源列表,例如:value=“http://example.com”。*表示允许来自任意请求源的请求。

其值存储在响应标头Access-Control-Allow-Origin中。默认情况下,其值为*,允许来自任意请求源的请求。注意:CORS处理时,从Forwarded、X-Forwarded-Host、X-Forwarded-Port、X-Forwarded-Proto取请求源值。

2、origins:value与origins含义相同,可以任选value和origins进行设置。value与origins若同时存在,两者的值需一致,否则启动时会出现异常。

3、allowedHeaders:指定允许实际请求标头列表,例如:allowedHeaders=“Content-Type,Access-Token”。表示允许实际请求带有任意标头。其值存储在响应标头Access-Control-Allow-Headers中。
若为Cache-Control、Content-Language、Expires、Last-Modified、Pragma,则无需设置。默认情况下,其值为
,允许实际请求带有任意标头

4、exposedHeaders:指定允许客户端(如浏览器)访问的响应标头列表,例如:exposedHeaders=“Content-Length”。其值存储在实际CORS请求的响应头Access-Control-Expose-Headers中。默认情况下,只允许客户端访问:Cache-Control、Content-Language、Content-Type、Expires、Last-Modified、Pragma。

5、methods 指定允许请求的HTTP方法。默认情况下,允许请求的HTTP方法与@RequestMapping相同。

6、allowCredentials:指定其值,表示客户端(如浏览器)是否应将凭证(如Cookies)和跨域请求一起发送到服务器。其值存储在预处理响应标头Access-Control-Allow-Credentials中。注意:此选项与配置域建立了高级别的信任,由于公开敏感的信息(如Cookies或CSRF令牌),会增加Web应用程序受攻击的概率。
默认情况下,此值不设置,因此不允许使用任何凭证。

7、maxAge:指定预处理响应的最大缓存期限,单位为秒。其值存储在预处理响应标头Access-Control-Max-Age中。其值设置合理可以有效减少客户端与服务器预处理请求的交互次数。其值为负,表示未定义。
默认情况下,其值为1800秒(30分钟)。

补充:
@CrossOrigin 表示所有的URL均可访问此资源

@CrossOrigin(origins = “http://127.0.0.1:8080”)//表示只允许这一个url可以跨域访问这个
controller

代码说明:@CrossOrigin这个注解用起来很方便,这个可以用在方法上,也可以用在类上。如果你不设置他的value属性,或者是origins属性,就默认是可以允许所有的URL/域访问。


两种使用方法:

一种是直接在controller上加该注解,在类上加,则该类所有的接口方法都被配置:

    @CrossOrigin(origins = "http://localhost:8080")
    @GetMapping("/greeting")
    public Greeting greeting(@RequestParam(required = false, defaultValue = "World") String name) {
        System.out.println("==== get greeting ====");
        return new Greeting(counter.incrementAndGet(), String.format(template, name));

第二种是全局CROS,可以更改其中的任何跨域属性:

@Configuration
public class MyConfiguration {

    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurerAdapter() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**");
            }
        };
    }
}

guide18、Accessing JPA Data with REST

主要讲的是使用 Spring Data REST 创建和检索存储在数据库中的对象。Spring Data REST 采用了Spring HATEOAS和Spring Data JPA的特性,并将它们组合在一起。Spring Data REST 还支持Spring Data Neo4j、Spring Data Gemfire和Spring Data MongoDB作为后端数据存储。

Guide涉及注解:

@RepositoryRestResource: https://docs.spring.io/spring-data/rest/docs/current/api/org/springframework/data/rest/core/annotation/RepositoryRestResource.html

@RepositoryRestResource注解让编程人员可以直接通过repository提供数据接口,在这个“前端负责V和C,后端负责提供数据”的时代,非常方便;并且,可以通过给该注解传入参数’path’来改变URL。

@RepositoryRestResource(collectionResourceRel = "people", path = "people")
public interface PersonRepository extends PagingAndSortingRepository<Person, Long>, CrudRepository<Person,Long> {

  List<Person> findByLastName(@Param("name") String name);

}

总的来说,spring DATA REST通过简单的代码配置,就可以实现对对象的CURD/分页排序等功能,而不需要编写对应的Controller.

Spring Data JPA 为 Jakarta Persistence API (JPA) 提供存储库支持。它简化了需要访问 JPA
数据源的应用程序的开发

https://docs.spring.io/spring-data/jpa/docs/current/reference/html/


guide19、Accessing MongoDB Data with REST

讲的是基于hypermedia-based(超媒体)的restful 服务访问基于文档的数据。

Spring Data REST 还支持Spring Data JPA、Spring Data Gemfire和Spring Data Neo4j作为后端数据存储。

和上个guide讲的内容差不多,就是数据存放的地方变成了mongoDB.

@RepositoryRestResource(collectionResourceRel = "people", path = "people")
public interface PersonRepository extends MongoRepository<Person, String> {

  List<Person> findByLastName(@Param("name") String name);

}

继承的存储库接口变为了MongoRepository,内部提供了各种操作数据对象的方法。

Spring Data REST 使用HAL 格式进行 JSON 输出。它很灵活,并提供了一种方便的方式来提供与所服务的数据相邻的链接。


guide20、Producing a SOAP web service

主要讲的是基于WSDL的SOAP web服务区公开不同欧洲国家的数据。

SOAP(原为Simple Object Access Protocol的首字母缩写,即简单对象访问协议)是交换数据的一种协议规范,使用在计算机网络Web服务(web service)中,交换带结构的信息。

WSDL 是基于 XML 的用于描述 Web Services 以及如何访问 Web Services 的语言。

Guide涉及注解:

@PostConstruct:该注解的功能:当依赖注入完成后用于执行初始化的方法,并且只会被执行一次。该注解是Java jdk提供的注解,而不是Spring框架提供的。

官方文档:https://docs.oracle.com/javase/8/docs/api/javax/annotation/PostConstruct.html

@Endpoint                                                                                      
public class AnnotationOrderEndpoint {

  private final OrderService orderService;

  @Autowired                                                                                   
  public AnnotationOrderEndpoint(OrderService orderService) {
      this.orderService = orderService;
  }

  @PayloadRoot(localPart = "order", namespace = "http://samples")                              
  public void order(@RequestPayload Element orderElement) {                                    
    Order order = createOrder(orderElement);
    orderService.createOrder(order);
  }

  @PayloadRoot(localPart = "orderRequest", namespace = "http://samples")                       
  @ResponsePayload
  public Order getOrder(@RequestPayload OrderRequest orderRequest, SoapHeader header) {        
    checkSoapHeaderForSomething(header);
    return orderService.getOrder(orderRequest.getId());
  }
}

SpringWebServices(Spring-WS)是Spring社区的一个产品,专注于创建文档驱动的Web服务。SpringWebServices旨在促进契约优先的SOAP服务开发,允许使用多种操作XML有效负载的方式之一创建灵活的Web服务。

@Endpoint: 此注解告诉Spring注解这是个类有资格处理soap请求。是spring-ws服务端的核心概念,spring-ws通过Endpoints来定义服务端动作,来接收处理XML请求,并生成响应XML。可以通过@Endpoint注解来创建endpoint,每一个endpoint都可以定义多个处理请求的方法。

@PayloadRoot:一般通过@PayloadRoot可以指定每一个方法处理哪一类的消息

@RequestPayload: 指传入消息将映射到该方法的参数请求对象。

@ResponsePayload: 使Spring WS将返回值映射到响应Order。

可以类比Spring MVC的Controller做个类比,有点相似。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/572844.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【微博-计算Cell子控件的frame Objective-C语言】

一、计算Cell子控件的frame 1.来,看一下,刚才我们已经做到把这个模型设置给自定义的cell了吧, 那么,在这个自定义Cell里面呢,我们是不是要开始设置数据了, 设置数据,我们,设置数据,其实很简单,就是把我们这里边的每一个控件,对应的值,从模型里面取出来,给了它,…

挂耳式耳机品牌排行榜,看看谁被推荐上榜

下班路上就想放空自己刷会儿视频&#xff0c;但是马路、地铁还有公交上都会有嘈杂的声音影响&#xff0c;如果佩戴入耳式耳机放大声音不仅会过度屏蔽外界&#xff0c;同时还会损伤我们的耳朵&#xff0c;所以新近流行的开放式耳机很好的解决了这些问题&#xff0c;但也有很多小…

智安网络|如何做好网络漏洞管理?这几点一定要了解!

随着网络技术的不断发展和应用&#xff0c;网络安全已经成为了各个企业、机构、甚至个人都需要面对和解决的难题。而在网络安全中&#xff0c;漏洞管理是非常重要的一个方面。本文将阐述网络安全中漏洞管理的相关知识和如何有效地进行漏洞管理。 一、漏洞管理的定义 漏洞是指软…

5.YAML介绍

什么是YAML&#xff1f; YAML是一种存储数据的文件格式。类似json和xml。 Ansible playbooks或者配置文件,以称为YAML的特定格式编写&#xff61;如果您使用过其他数据结构格式&#xff08;如XML或JSON&#xff09;,则应该能够轻松地使用它&#xff61; 上图中就是以3种格式表…

找不到vcruntime140.dll,无法继续执行代码,vcruntime140.dll怎么修复

vcruntime140.dll是一个Microsoft Visual C Redistributable包的一部分&#xff0c;它是用于运行在Windows操作系统上使用Visual C开发的程序和应用程序的必备文件之一。它是Microsoft Visual C Redistributable的动态链接库文件&#xff0c;也就是所谓的DLL文件。如果这个文件…

nova 11系列可打断动画闪亮登场,带你领略极致丝滑体验

华为nova 11系列手机自发布以来就受到广大消费者的好评和青睐&#xff0c;尤其是全网热捧的丝滑流畅动效体验&#xff0c;更是让不少用户直呼——“一旦上手&#xff0c;就回不去了”&#xff0c;让我们先来欣赏一下nova 11系列上的动效吧&#xff01; 从上面的视频演示&#x…

C++学习day--12 循环的应用,暴力破解密码和输出动图

第 1 节 职场修炼&#xff1a;程序员到底能干多久 现状&#xff1a; 很多程序员&#xff0c;过了 30 岁&#xff0c;纷纷转行。 原因&#xff1a; 1 &#xff09;薪资过万后&#xff0c;很难进一步提升 2 &#xff09;可替代性高&#xff0c;在新人面前&#xff0c;没有…

学习ChatGPT,从这几个中文提示词教程开始

ChatGPT已经火爆了一段时间了&#xff0c;很多用户也体验了ChatGPT&#xff0c;他的回答非常的强大。但有些人能够得到很好地回答&#xff0c;有些人得到的答案&#xff0c;并不是非常的完美&#xff0c;其实这个短时间内&#xff0c;和一个叫做提示工程&#xff08;Prompt Eng…

在城市之间“闪送”,同城即时速递的正确解法

从5月14日母亲节到“520”网络情人节&#xff0c;鲜花店、餐饮店和蛋糕店里&#xff0c;满是闪送骑手师傅进进出出的身影。 在成都&#xff0c;一位闪送师傅通过抖音展示了自己忙碌的一天&#xff1a;“了不起的母亲节&#xff0c;凌晨就开始预约单&#xff0c;&#xff08;系…

SSM框架学习-REST内容、案例及快速开发

1. REST简介 当访问行为不同时&#xff08;例如insert、delete等等&#xff09;&#xff0c;REST风格描述形式的路径是相同的&#xff0c;那如何区分&#xff1f; 所以&#xff0c;通过路径请求方式&#xff0c;我们就可以区分对资源进行了何种操作&#xff1b; 而REST风格对资…

[PyTorch][chapter 35][经典卷积神经网络-1 ]

前言&#xff1a; ILSVRC&#xff08;ImageNet Large Scale Visual Recognition Challenge&#xff09;是近年来机器视觉领域最受追捧也是最具权威的学术竞赛之一&#xff0c;代表了图像领域的最高水平。 ImageNet数据集是ILSVRC竞赛使用的是数据集&#xff0c;由斯坦福大学李…

太强啦!!!ChatGPT 能上传文件了,能执行 Python 代码啦!

ChatGPT又出试验型新模式&#xff0c;不少网友陆续收到代码解释器Alpha测试资格。 ​ 简单来说&#xff0c;这个模式提供两个功能&#xff1a;执行Python代码&#xff0c;接受文件上传下载。 为什么是这两个功能的组合&#xff1f; 可以看目前最火的一条测试结果&#xff0c…

MySQL——锁:概述、全局锁、表级锁、表锁(读锁、写锁)、元数据锁、意向锁、行级锁、行锁、间隙锁临键锁

5.锁 5.1 概述 ​ **锁是计算机协调多个进程或线程并发访问某一资源的机制。**在数据库中&#xff0c;除传统的计算资源&#xff08;CPU、 RAM、I/O&#xff09;的争用以外&#xff0c;数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必…

Linux---用户切换命令(su命令、sudo命令、exit命令)

1. su命令 root用户拥有最大的系统操作权限&#xff0c;而普通用户在许多地方的权限是受限的。 普通用户的权限&#xff0c;一般在其HOME目录内是不受限的。 一旦出了HOME目录&#xff0c;大多数地方&#xff0c;普通用户仅有只读和执行权限&#xff0c;无修改权限。 su 是…

chatgpt国内镜像有什么优势?Gpt有什么强大的功能

chatgpt国内镜像有什么优势&#xff1f;其实这个是很多人都想知道的问题&#xff0c;小编觉得有必要给大家说一下&#xff0c;毕竟这个东西有优点也有缺点&#xff0c;下面我们一起来看看吧。 一.chatgpt国内镜像的优势 1.网络延迟更低 使用国内的ChatGPT镜像&#xff0c;可…

多目标遗传算法NSGA-II改进策略

上篇写道了关于多目标遗传算法NSGA-II原理详解及算法代码实现&#xff0c;本文将继续在这篇文章的基础上更深一步的向前探索&#xff0c;探索方向为&#xff1a; 基于NSGA-II算法的固有缺点&#xff0c;着重对其算法提出改进策略&#xff0c;并予以代码实现。同样&#xff0c;本…

医药公司药品品种分析

分析一家医药公司药品管线品种首先要罗列出该制药企业的上市品种及在研品种&#xff0c;然后再逐一分析之。 一般医药公司药品管线品种分析需要从多个角度进行解析&#xff0c;如&#xff1a;市场规模&#xff0c;市场占有率、政策法规、基药目录、国家/省市医保目录、新农合目…

【智慧排水】智慧排水监测系统助力城市抗洪排涝建设

随着城市的发展和生活水平的提高&#xff0c;城市排水系统面临着各种挑战和难题。虽然国家已经大力建设和改造雨污分流系统&#xff0c;以解决城市排水问题&#xff0c;但在实际应用中仍然存在着诸多难题&#xff0c;如雨污混接、偷排漏排、管道堵塞淤积、管道溢流和内涝等问题…

一文看懂GPT风口,都有哪些创业机会?

新时代的淘金者&#xff0c;低附加价值的创业要谨慎&#xff0c;高附加价值、低技术门槛创业也要谨慎&#xff0c;主干道边上的创业也要谨慎。不少朋友看完不淡定了&#xff0c;干什么都谨慎&#xff0c;回家躺平好了&#xff0c;我有个朋友&#xff0c;靠ChatGPT&#xff0c;半…

功率信号源的使用方法有哪些

功率信号源是一种常见的电子设备&#xff0c;主要用于产生各种功率信号&#xff0c;例如直流信号、正弦信号等。功率信号源广泛应用于工业、科研、医疗等领域&#xff0c;例如电机驱动、电子仪器仪表、医疗设备等。本文将详细介绍功率信号源的使用方法和注意事项。 图&#xff…