此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 明确功能,各司其职 在一个结构清晰的项目中,一个没有module划分的结构显然不是最佳实践.有人会说可以在同一个Project中定义不同的包名及包路径来做区分,但这样当功能复杂后并不可取. 当然,如果你的项目足够简单,比如只是提供一个很简单的微服务,没有分层治理的概念,那么则不需要关心这个问题了. 下面就Spring Boot环境中多module打包的注意事项列举如下,希望对大家有所帮助. 新建所需要的m…
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 解决问题 随着spring boot 框架的逐步使用,我们期望对于一些已有的系统进行改造,做成通用的脚手架,方便在后续新项目中继续使用. 本章主要介绍了如何采用Spring Boot改造传统的jsp项目. 难点 首先,Spring Boot + JSP的方式肯定是可以使用的.不过官方早就说过不推荐使用jsp来进行前端页面的开发,官方推荐的是Themeleaf,更加符合现在前后端分离的开发模式. 使用Spr…
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 两种打包方式 采用Spring Boot框架来构建项目,我们对项目的打包有两种方式可供选择,一种仍保持原有的方式不变,package一个war包放置到外置的应用容器中:另一种则是直接打包成一个jar包,这个jar包里面包含了内置的应用容器,可以通过Java命令直接启动运行. jar包方式 对于jar包的方式,前面文章的示例中其实我们就是采用的此种方式,使用方式不再赘述. war包方式 如果采用war包的方…
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Spring Boot? Spring Boot 是由pivotal团队提供的一个基于Spring的全新框架,设计初衷在于简化Spring应用的繁杂配置,遵循约定优于配置的原则,快速构建项目,不用过多的关注各组件的配置细节,达到快速开发的目的. 开源至今,历经4年多的发展,Spring Boot框架逐步完善,备受Java开发者的青睐,社区活跃,网上相关知识的文章介绍也比较多,官方版本持续更新中,目前稳定版…
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 为什么选择log4j2 log4j2相比于log4j1.x和logback来说,具有更快的执行速度.同时也支持日志的异步写入.还有很多有趣的特性,大家可以参考官方文档 在这篇文章里,对比描述了log4j2的优点,以及在传统的应用中如何进行日志的升级.在本文主要说下spring boot环境中如果使用lig4j2记录日志. spring boot 默认采用Logback进行日志的记录.当然也是支持log4j…
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 自定义视图解析 在默认情况下Spring Boot 的MVC框架使用的视图解析ViewResolver类是ContentNegotiatingViewResolver,这个解析器比较智能,它会根据你的请求类型(一般以请求uri的后缀来区分或请求头的Accept得到)来自动选择返回的数据文档类型. 一般情况下,这个能满足大部分人的使用需求,但我们这里只是需要提供RESTful接口的话,那么这个解析规则就不太…
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. Bean 的顺序加载 有些场景中,我们希望编写的Bean能够按照指定的顺序进行加载.比如,有UserServiceBean和OrderServiceBean,我们需要在OrderServiceBean中调用UserServiceBean,获取其提供的一些数据信息.针对这一场景,通常来说,有这么几种方式: 1.将UserServiceBean封装成一个服务类(如采用@Service注解),然后在OrderS…
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 传统的filter及listener配置 在传统的Java web项目中,servlet.filter和listener的配置很简单,直接在web.xml中按顺序配置好即可,程序启动时,就会按照你配置的顺序依次加载(当然,web.xml中各配置信息总的加载顺序是context-param -> listener -> filter -> servlet),项目搭建完成后,估计一般新来的开发同学没啥…
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 传统的properties读取方式 一般的,我们都可以自定义一个xxx.properties文件,然后在工程的xml配置文件中注入相关的配置bean,示例如下: <context:property-placeholder location="classpath:config/${spring.profiles.active:unknown}/zk.properties" order=&qu…
此文已由作者易国强授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 快速构建 如果我们想基于spring mvc 提供一个简单的API查询服务,传统的方式,首先需要我们引入spring-mvc/spring-context等等各项依赖包,然后配置相关的参数,编写api接口,准备Tomcat并进行配置,编译打包,启动Tomcat运行.在这一系列的过程中,其实编写api接口才是我们最关心的,其他都是为这个api接口能提供服务而准备的. 基于Spring Boot的方式来构建此…