这个文档是为了让大家更好地理解代码,想要贡献代码的请看 CONTRIBUTING.md
当我们配置好开发环境,把项目 clone 下来之后,我们只需要找到 BackendApplication,先 run 一次,让 IDEA 生成配置文件, 然后编辑这个启动配置在 active profiles 里填入 develop 保存,就配置好了本地的开发环境可以直接启动了。如果是用别的ide的小伙伴,在开发环境启动时加入参数 -Dspring.profiles.active=develop 就可以启动了
因为业务逻辑还比较简单,现在我们不采用复杂的微服务架构,一切都建立在 spring-boot 之上,当然这也为了将来有一天需要升级为 spring cloud 打下基础。
总的来说,我们使用了如下的模块完成对应的功能:
- actuator 服务器健康状况监控
- prometheus 更多服务运维数据
- cache 我们使用注解的方式来做缓存,避免直接使用 redis 或者 memcached来完成缓存的工作,关于缓存下面还有更多说明
- data-jpa 我们使用 data-jpa 的框架来避免直接操作数据库的链接,这一方面解放了我们自己去深度管理 session 的麻烦,一方面让我们更好地在本地开发,避免依赖复杂数据库环境,另一方面也是为了之后在访问量上来之后做扩容的准备
- h2 开发环境本地数据库的实现
- mysql 线上环境数据库的实现
- mail-sender 我们用来发邮件的框架,将会把邮件集中起来用第三方的邮件服务发送
- swagger2 开发环境里给前端小伙伴的接口文档
- Official Apache Maven documentation
- Spring Boot Maven Plugin Reference Guide
- Create an OCI image
- Spring Data JPA
- Spring cache abstraction
- Spring Web
- Java Mail Sender
- Spring Boot Actuator
- Prometheus
- Spring Data Redis (Access+Driver)
- Accessing Data with JPA
- Caching Data with Spring
- Building a RESTful Web Service
- Serving Web Content with Spring MVC
- Building REST services with Spring
- Accessing data with MySQL
- Building a RESTful Web Service with Spring Boot Actuator
- Messaging with Redis
不在代码里手动操作缓存的原因有如下几个:
- 开发环境我们是用 simple 类型的缓存,这样就不需要在本地搭建 redis服务了,simple类型的缓存用的是 ConcurrentHashMap,有助于我们在开发的时候快速启动服务
- 如果深度使用 redis 的复杂类型的话,未来缓存扩容是一个会面临的问题
当然如果我们是把 redis 当作别的用途,比方说 pubsub,那我们另说