Browsed by
标签:Spring Boot

Spring Boot与GraphQL – 篇三 集成开发

Spring Boot与GraphQL – 篇三 集成开发

[toc] Spring Boot与GraphQL – 篇三 集成开发 在了解了GraphQL相关概念,以及使用的方法后,就该进入到实操阶段了。使用常用的springboot来搭建服务,并提供GraphQL查询。 配置 在Spring Boot中集成GraphQL非常简单,只需引入两个包 pom.xml <dependency> <groupId>com.graphql-java</groupId> <artifactId>graphql-spring-boot-starter</artifactId> <version>4.0.0</version> </dependency> <dependency> <groupId>com.graphql-java</groupId> <artifactId>graphql-java-tools</artifactId> <version>4.3.0</version> <dependency> 定义Schema 推荐在resources目录下建立graphql文件夹,在其中建立root.graphqls和schema.graphqls两个文件。一般会在root.graphqls文件中放Query或者Mutation的接口定义,在schema.graphql…

阅读全文 Read More

Spring Boot与GraphQL – 篇二 Schema格式与规范

Spring Boot与GraphQL – 篇二 Schema格式与规范

模式 Schema 在了解了GraphQL是如何查询以及如何变更数据后,我们需要进一步了解一下。对于客户端来说,需要在请求数据前知道数据的格式,包括有哪些field,这些字段的子对象又有哪些,子对象又是什么样的数据结构。这样就出现了schema的概念。 对象类型与字段 在GraphQL的schema中,构成的基本元素就是对象object类型type,即指定你想要获取的对象,以及想要获取的对象的字段,例如: type Character { name: String! appearsIn: [Episode!]! } Character定义了一个为GraphQL对象类型 name和appearsIn为Character类型中的字段 String是一个预定义的标量类型 String!表示此字段不可为空 [Episode!]!表示返回的是一个Episode对象列表,并且也是非空的 参数 每个GraphQL对象的字段都可以有若干个参数,例如下面例子中的length字段: type Starship { id: ID! name: String! length(unit: LengthUnit = METER): Float } 参数都需要预先定义好,例如上面例子中,unit就是length的一个参数。参数可以是必需也可以是可选,当一个参数是可选时,可以定义默认值。如果不给unit传递参数,那么METER即为默认值。 查询与变更类型 schema中大多数类型都是对象类型,除此之外,还有两种重要类型:查询que…

阅读全文 Read More

Spring Boot与GraphQL – 篇一 如何进行查询

Spring Boot与GraphQL – 篇一 如何进行查询

背景介绍 GraphQL,由Facebook开源,并在github api v4中得到了使用,替代了v3中restful的地位。既然大厂使用,那就得去看看到底是个什么货色。 GraphQL相对于传统的restful接口,主要是在灵活性上有较大改进。例如,要增加一个属性返回,之前的做法可能需要更改接口的返回对象;如果属性越加越多,可能衍生出多个接口(包含返回少量的和大量的数据),也可能由此诞生一个巨大的接口(包含所有的数据);如果是多个对象的组合,由于组合的形式多种多样,有可能也会造成多个接口的产生。 而解决此缺点的做法是,客户端根据自己的需求来传递请求参数,参数中指明需要哪些数据,则服务器端根据这些参数返回给客户端所需要的数据。这样,关于数据的特定字段、或者组合、聚合类的需求,都无需服务端关心,客户端自己确定就好。 查询与变更 Queries and Mutations 字段 Fields 客户端通过指定Fields来控制返回的数据,Fields即为请求的数据,类似字段的含义。指定了服务端定义好的标量,例如: 请求 { hero { name # Queries can have comments! friends { name } } } 响应 { “data”: { “hero”: { “name”: “R2-D2”, “friends”: [ { “name”: “Luke Skywalker” }, { “name”: “Han Solo” }, { “name”: “Leia Organa…

阅读全文 Read More

springboot集成整合mongodb

springboot集成整合mongodb

springboot集成整合mongodb 在非关系型数据库的使用中,mongodb的出镜率现在也不小了,在最近做地图相关的项目中,关于海量轨迹数据的存储也选型了此数据库。在springboot中集成mongodb也非常简单,spring data模块提供了开箱即用的功能。 配置 首先向项目中引入依赖,修改pom.xml文件: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> 并在配置文件application.properties中配置连接池相关参数: spring.data.mongodb.uri=mongodb://username:password@localhost:27017/test_db 或者 spring.data.mongodb.username=username spring.data.mongodb.password=password spring.data.mongodb.database=test_db spring.data.mongodb.host=localhost spring.data.mongodb.prot=27017 通过以上两步,springboot应用到mongodb的连接就已…

阅读全文 Read More

创建批量服务

创建批量服务

创建批量服务 Creating a Batch Service 通过此教程你将创建一个基本的批量驱动的解决方案。 This guide walks you through the process of creating a basic batch-driven solution. 将要做什么 What you’ll build 你将创建一个从CSV中导入数据,转为自定义编码后并存入数据库的服务。 You’ll build a service that imports data from a CSV spreadsheet, transforms it with custom code, and stores the final results in a database. pom.xml <?xml version=”1.0″ encoding=”UTF-8″?> <project xmlns=”http://maven.apache.org/POM/4.0.0″ xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”> <modelVersion>4.0.0</modelVersion> <grou…

阅读全文 Read More

使用RabbitMQ消息队列

使用RabbitMQ消息队列

Messaging with RabbitMQ 通过此教程你将建立一个RabbitMQ AMQP服务器来发布和订阅消息。 This guide walks you through the process of setting up a RabbitMQ AMQP server that publishes and subscribes to messages. 将要做什么 What you’ll build 你将构建一个应用,使用Spring AMQP的RabbitTemplate来发布消息,然后使用MessageListenerAdapter在POJO订阅此消息。 You’ll build an application that publishes a message using Spring AMQP’s RabbitTemplate and subscribes to the message on a POJO using MessageListenerAdapter. pom.xml <?xml version=”1.0″ encoding=”UTF-8″?> <project xmlns=”http://maven.apache.org/POM/4.0.0″ xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”http://maven.apache.org/POM/4.0.0 …

阅读全文 Read More

定时任务

定时任务

定时任务 Scheduling Tasks 通过此教程你将了解如何使用Spring来做定时任务。 This guide walks you through the steps for scheduling tasks with Spring. 将要做什么 What you’ll build 你将创建一个应用,使用Spring的@Scheduled注解来实现每5秒钟输出当前时间。 You’ll build an application that prints out the current time every five seconds using Spring’s @Scheduled annotation. 创建一个定时任务 Create a scheduled task 创建好项目工程后,你就可以开始创建一个定时任务了。 Now that you’ve set up your project, you can create a scheduled task. src/main/java/hello/ScheduledTasks.java package hello; import java.text.SimpleDateFormat; import java.util.Date; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.annotation.Sch…

阅读全文 Read More

使用Spring缓存数据

使用Spring缓存数据

使用Spring缓存数据 Caching Data with Spring 通过此教程你将完成在Spring管理的bean上启用缓存。 This guide walks you through the process of enabling caching on a Spring managed bean. 将要做什么 What you’ll build 你将构建一个应用,并在一个简单的book书籍库上启用缓存。 You’ll build an application that enables caching on a simple book repository. pom.xml <?xml version=”1.0″ encoding=”UTF-8″?> <project xmlns=”http://maven.apache.org/POM/4.0.0″ xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”> <modelVersion>4.0.0</modelVersion> <groupId>org.springframework</groupId> <artifac…

阅读全文 Read More

创建异步方法

创建异步方法

创建异步方法 Creating Asynchronous Methods 通过完成此教程,你将创建到Github的异步请求。重点是在异步部分,这是编排服务的一个特性。 This guide walks you through the steps to create asynchronous queries to GitHub. The focus is on the asynchronous part, a feature often used when scaling services. 将要做什么 What you’ll build 你将建立一个查询服务,用于查询Github用户信息并通过Github的API获取数据。编排服务的一个方法是在后台运行一个任务,并使用Java的CompletableFuture接口来等待结果的返回。Java的CompletableFuture是普通Future的一个进化版本。新版本可以更容易的编排多个异步操作,合并为单个异步的计算。 You’ll build a lookup service that queries GitHub user information and retrieves data through GitHub’s API. One approach to scaling services is to run expensive jobs in the background and wait for the results using Java’…

阅读全文 Read More

使用Spring MVC提供Web内容

使用Spring MVC提供Web内容

使用Spring MVC提供Web内容 Serving Web Content with Spring MVC 你将通过此教程使用Spring创建一个”hello world”网站。 This guide walks you through the process of creating a “hello world” web site with Spring. 将要做什么 What you’ll build 你将构建一个拥有静态主页的应用,并且接收如下HTTP GET请求: You’ll build an application that has a static home page, and also will accept HTTP GET requests at: http://localhost:8080/greeting 然后会响应一个HTML网页。HTML的body包含一个问候: and respond with a web page displaying HTML. The body of the HTML contains a greeting: “Hello, World!” 也可以通过请求字符串的一个可选参数name来自定义问候: You can customize the greeting with an optional name parameter in the query string: http://localhost:…

阅读全文 Read More