熟悉Spring框架的开发人员对其著名的spring-petclinic应用都不陌生。Nils在spring-petclinic的基础上开发了结合GraphQL特性的spring-petclinic-graphql应用,本文对该应用进行详解。
1. spring-petclinic-graphql的组成
- backend,使用graphql-java实现的GraphQL API服务
依赖graphql-java-tools软件模块,实现动态绑定Resolver方法到GraphQLSchema对象。
- frontend,使用React Apollo实现的GraphQL查询
2. 后端代码分析
结构非常清晰的分层设计:
- Spring Boot入口应用包,org.springframework.samples.petclinic
- POJO数据类,org.springframework.samples.petclinic.model
- 请求解析Resolvers类,org.springframework.samples.petclinic.graphql.resolvers
- 数据访问接口,org.springframework.samples.petclinic.repository
- 数据访问实现类(默认使用spring-data-jpa访问hsqldb数据库),org.springframework.samples.petclinic.repository.springdatajpa
git clone https://github.com/spring-petclinic/spring-petclinic-graphql.git
cd spring-petclinic-graphql/backend
mvnw spring-boot:run
由于不懂前端的Apollo,只能通过浏览器使用GraphiQL测试,访问http://localhost:9977/即可。
参考链接:
https://github.com/spring-petclinic/spring-petclinic-graphql