以我们的项目为例。
我们的项目是纯后台服务项目,即没有前端页面,只对外提供服务;项目基于SpringBoot,引入spring-boot-starter-web,直接公开接口,消息使用的JSON,很少接口是从旧系统迁移过来的,所以为了让调用方尽可能小的修改,保留了XML消息;在正式的生产环境中,内置的Tomcat也是用;集成了Swagger,在线自动生成界面文档。
ORM框架选择MyBatis。由于项目中的查询大多是单表查询,且查询条件相对固定,所以标注做出的SQL语句是直接绑定的。
因为项目不仅使用了关系型数据库,而且经过处理关联后在MongoDB中保存了更多的数据,所以项目也使用了Spring数据MongoDB。我们的MongoDB已经部署了副本集,使用Spring数据MongoDB,通过简单的配置就可以完成对多个mongob的访问。如果其中一个MongoDB挂了,对服务没有影响,所以我们可以在扩展MongoDB时在线进行(扩展内存和CPU时MongoDB需要停止)。
在与一些系统的交互中使用了RabbitMQ,只要将spring-boot-starter-amqp引入SpringBoot,实际上就可以很容易地与RabbitMQ集成。生产者和消费者都很方便。
因为是纯接口服务,为了减轻数据库的压力,我们根据业务场景(数据变化不频繁,业务场景对实时性要求不是很高)将部分接口的结果直接缓存到Redis中。在整合Redis的时候,我们前后尝试了两种
SpringBoot项目,最简单的与Redis集成可以直接使用@
做J2EE应用的时候,如果只是单个应用使用,就把jar文件放在WEB-INFlib文件夹下。如果您想一起使用多个应用程序,请将它们放在服务器上。在lib目录中(或者把路径放在系统的classpath变量中),比如tomcat放在安装目录的lib文件夹中。