Spring Boot中几个实用的方法
也有好几周没写东西了,主要是上上周被调去前公司产品组做前端了,然后这周刚换工作也比较忙,以至于无暇他顾,着实惭愧啊。这周新工作主要是C/S项目,C端使用C#+Devexpress,S端使用的Spring MVC+Spring Boot(Spring MVC是之前老项目,这次的新业务准备用Spring Boot,所以才有了这二者)。在项目搭建过程中想到几个比较实用的思路,所以,这里就来总结记录一下。
也有好几周没写东西了,主要是上上周被调去前公司产品组做前端了,然后这周刚换工作也比较忙,以至于无暇他顾,着实惭愧啊。这周新工作主要是C/S项目,C端使用C#+Devexpress,S端使用的Spring MVC+Spring Boot(Spring MVC是之前老项目,这次的新业务准备用Spring Boot,所以才有了这二者)。在项目搭建过程中想到几个比较实用的思路,所以,这里就来总结记录一下。
当我们的Java程序上线之后,有时候会由于未能及时发现自己写的bug,导致程序抽风,比如:CPU、内存持续升高,堆栈溢出等,这时候我们可以借助JVM在线诊断分析工具–Arthas快速定位线上问题
Spring Boot
遵循约定大于配置的思想为我们省去了繁杂的XML配置,其为我们提供了许多诸如:spring-boot-starter-web
、spring-boot-starter-data-jpa
、spring-boot-starter-data-redis
等常用的Starter
组件,使得我们整合各种常用组件时显得非常简便快捷,那么这个Starter
为我们做了什么工作?让我们省去了各种繁杂的整合过程。
一般一个项目就只会用到一个数据库,但是有时候遇到比较复杂的一点的项目就会涉及到多个数据库,比如在业务量较大的时候会涉及到分库分表,如果不增加数据库代理层的话,就只有在项目中来处理。还有像我们现在在一个项目中会涉及到GBase
、MySQL
、DB2
这三种数据库,这种情况就涉及到多种数据库连接。那么我们Spring Boot中如何实现多数据库连接呢?
在Java中,我比较ORM熟悉就只有Hibernate
和Mybatis
,其他的并未实践使用过,在这二者之间我更喜欢Mybatis
,因为它精简、灵活(毕竟我是上年纪的程序员,喜欢自己写SQL)。
目前适用于Spring Cloud服务注册中心的解决方案比较多,诸如:Consul
、Spring Cloud Eureka
、Zookeeper
、Etcd
等,配置中心有:Spring Cloud Config
、Apollo
、Disconf
等。总感觉这些搭建起来较为繁琐,所以考虑使用Nacos
来做配置和服务注册中心。
日志可以帮我们在开发过程中乃至于生产上快速有效的定位问题的好帮手,所以如何记录有效的日子变得更加重要,在Spring Boot中,已经为我们默认添加了logback
和log4j2
,默认情况下,Spring Boot采用的是logback
。关于日志组件的性能,我并没有亲自验证过,只是在logback log4j log4j2 性能实测中说log4j2
性能是最高的。
异常可以说像大宝一样天天见,一不小心就可能写了一个bug.不过有异常不可怕,可怕是出了问题连异常的都没有,一般情况下,我们也都是try catch
的方式在程序里面捕捉,但是这样有时候可能一疏忽,连try catch都忘了写,这时候如果出现问题,就比较尴尬了,所以,我们需要更加方便、优雅的全局异常处理的方式来优化我们的异常捕捉机制。
在项目开发过程中,注解给我们带来方便、快捷的极简编程体验,前面也有记录了一些常用的注解命令,可见注解是比较常用且重要的功能,有时候validation自带的注解可能不能满足我们的个性化需要时,我们能不能根据自己的情况自定义注解命令呢?
在我们使用Spring Boot开发Web Api的时候,肯定会少不了参数校验,一般情况下,大部分是使用if
来判断参数是否合法,在参数较少的情况下,这样做除了少量的重复工作外,也没有较大的工作量。但是当遇到一个复杂的参数的时候,可能整个方法大部分的代码都是if
。工作量大不说,代码也精简。那么有没有更好的方式来处理呢?这就是我们这里要说到的参数校验技巧。