熟悉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查询的React应用
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
启动后端GraphQL服务器,默认监听localhost的9977端口。
所以,可以直接通过浏览器访问GraphiQL测试服务器,浏览器中打开http://localhost:9977/即可。
4.前端
前端使用天然支持GraphQL的Apollo Client访问GraphQL API。
前端使用React生产UI,React组件默认使用webpack构建。
前端使用Yarn依赖管理工具,首先执行yarn install安装所有的软件包,然后执行yarn start启动前端服务器。前端服务器默认监听localhost的8080端口。浏览器中打开http://localhost:8080/即可。
下面是博主对该项目的两个贡献。
参考链接:
https://github.com/spring-petclinic/spring-petclinic-graphql