《Spring Guides系列学习》guide16 - guide20

这篇具有很好参考价值的文章主要介绍了《Spring Guides系列学习》guide16 - guide20。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

要想全面快速学习Spring的内容,最好的方法肯定是先去Spring官网去查阅文档,在Spring官网中找到了适合新手了解的官网Guides,一共68篇,打算全部过一遍,能尽量全面的了解Spring框架的每个特性和功能。
《Spring Guides系列学习》guide16 - guide20
接着上篇看过的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做个类比,有点相似。文章来源地址https://www.toymoban.com/news/detail-463933.html

到了这里,关于《Spring Guides系列学习》guide16 - guide20的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《Spring Guides系列学习》guide35 - guide40

    要想全面快速学习Spring的内容,最好的方法肯定是先去Spring官网去查阅文档,在Spring官网中找到了适合新手了解的官网Guides,一共68篇,打算全部过一遍,能尽量全面的了解Spring框架的每个特性和功能。 接着上篇看过的guide34,接着往下看。 @Scheduled注解 : 是spring boot提供的用

    2024年02月06日
    浏览(43)
  • 《Spring Guides系列学习》guide11 - guide15

    要想全面快速学习Spring的内容,最好的方法肯定是先去Spring官网去查阅文档,在Spring官网中找到了适合新手了解的官网Guides,一共68篇,打算全部过一遍,能尽量全面的了解Spring框架的每个特性和功能。 接着上篇看过的guide10,接着往下看。 主要讲了非侵入式事务操作数据库

    2024年02月13日
    浏览(29)
  • 《Spring Guides系列学习》guide46 - guide50

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

    2024年02月05日
    浏览(37)
  • 《Spring Guides系列学习》guide6 - guide10

    要想全面快速学习Spring的内容,最好的方法肯定是先去Spring官网去查阅文档,在Spring官网中找到了适合新手了解的官网Guides,一共68篇,打算全部过一遍,能尽量全面的了解Spring框架的每个特性和功能。 接着上篇看过的guide5,接着往下看。 讲述了使用neo4j,将应用程序数据存

    2024年02月16日
    浏览(35)
  • 《Spring Guides系列学习》guide1 - guide5

    要想全面快速学习Spring的内容,最好的方法肯定是先去Spring官网去查阅文档,在Spring官网中找到了适合新手了解的官网Guides,一共68篇,打算全部过一遍,能尽量全面的了解Spring框架的每个特性和功能。 开始吧,自己按照顺序给每篇Guide编了号。 主要讲的是如何创建一个res

    2024年02月07日
    浏览(72)
  • 《Spring Guides系列学习》guide66 - guide68及小结

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

    2024年02月06日
    浏览(46)
  • 论文阅读 Stepwise Feature Fusion: Local Guides Global

    我在找论文时发现,把自己的分割模型命名为ssformer的有两个:,一个论文SSformer: A Lightweight Transformer for Semantic Segmentation中提出的一种轻量级Transformer模型,结构如下 这个结构很简单,就是在用MLP层处理一下不同层的swin transformer block特征,然后融合。 这个没什么太多好说的

    2024年03月16日
    浏览(71)
  • Guides new learners through bert‘s internals!

    作者:禅与计算机程序设计艺术 BERT(Bidirectional Encoder Representations from Transformers)是一个自然语言处理(NLP)预训练模型,由Google AI团队于2018年提出,它被证明能够提升多种自然语言理解任务的性能。本文将介绍BERT的基本概念、术语、算法原理、实现方法、数学原理及应用。希望

    2024年02月07日
    浏览(37)
  • 【Spring教程29】Spring框架实战:从零开始学习SpringMVC 之 服务器响应知识全面详解

    欢迎大家回到《Java教程之Spring30天快速入门》,本教程所有示例均基于Maven实现,如果您对Maven还很陌生,请移步本人的博文《如何在windows11下安装Maven并配置以及 IDEA配置Maven环境》,本文的上一篇为《SpringMVC 之 请求与请求参数详解》 上一节我们说了SpringMvc请求知识,这一节

    2024年02月03日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包