spring-boot
文章平均质量分 71
思与学
5年java工作经验,2年管理经验,主要接触的行业是企业级培训领域,参与过多个企业大学平台的构建工作,专注于技术管理工作,希望能够和更多同行交流,让自己在技术和管理的能力上都有更多的提升。
展开
-
spring boot项目实战:跨域问题解决
背景前后端分离架构,前端anglerjs,后端spring boot,使用shiro作为权限控制,已配置通用跨域请求支持。 前端调用接口时部分情况正常,部分情况出现跨域请求不支持情况,错误信息如下:Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' hea原创 2017-09-26 13:42:09 · 2457 阅读 · 0 评论 -
spring-boot实战:共享session
在工作中会遇到以下几个场景: 1. 发布新功能或修复bug,服务重启,用户需要重新登录 2. 当集群内某个节点失效时,用户明明刚登录,仍被提示需要重新登录 那如何做到服务发布、集群节点失效对用户无感知呢?有以下几种方式: 1. 使用cookie保存用户状态信息 2. session同步法(多个web-server之间相互同步session) 3. 后端统一存储(如:redis)关于这几种原创 2017-10-01 18:43:58 · 1015 阅读 · 0 评论 -
spring-boot实战:shiro
有很长一段时间都觉得自己添加个filter,基于RBAC模型,就能很轻松的实现权限控制,没必要引入shiro,spring-security这样的框架增加系统的复杂度。事实上也的确这样,如果你的需求仅仅是控制用户能否访问某个url,使用框架和自己实现filter效果基本一致,区别在于使用shiro和spring-security能够提供更多的扩展,集成了很多实用的功能,整体结构更加规范。 shir原创 2017-10-02 15:43:03 · 1315 阅读 · 0 评论 -
spring boot项目实战:JPA
公司的项目中很大一部分属于内部平台,所以对性能的要求没有那么高,开发速度反而更重要,因此在搭建基础框架时选择使用JPA,没有使用mybitis,当然其中也有一部分原因是之前一直使用hibernate,对mybitis不太熟悉^_^。一、配置JPA1、添加maven依赖<!-- jpa --><dependency> <groupId>mysql</groupId> <artifac原创 2017-10-03 21:42:57 · 1721 阅读 · 0 评论 -
spring boot实战之shiro session过期时间
在spring boot内,设置session过期时间只需在application.properties内添加server.session.timeout配置即可。在整合shiro时发现,server.session.timeout设置为7200,但未到2小时就需要重新登录,后来发现是shiro的session已经过期了,shiro的session过期时间并不和server.session.time原创 2017-10-06 08:26:46 · 18683 阅读 · 0 评论 -
spring boot项目实战:分布式锁
在部分情况下,要保证操作在整个集群内是同步的,以操作库存为例,多个减操作需要同步,常见的有两种方式: 1. 采用类CAS的方式,先查询库存,然后使用update xxx set num=num-1 where num=:num;这样可保证库在本次修改之前未被修改; 2. 使用分布式锁,保证同时只有一个地方在修改库存。 这里向大家展示一个基于redis的分布式锁。主要涉及三个类: 1. Dis原创 2017-10-04 19:35:32 · 4141 阅读 · 0 评论 -
spring boot实战之XSS过滤
XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。你可以自己做个简单尝试: 1. 在任何一个表单内,你输入一段简单的js代码:<script>for(var i=0;i<1000;i++){aler原创 2017-10-06 12:43:55 · 19473 阅读 · 17 评论 -
spring boot实战之CSRF(跨站请求伪造)
CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。攻击通过在授权用户访问的页面中包含链接或者脚本的方式工作。例如:一个网站用户Bob可能正在浏览聊天论坛,而同时另一个用户Alice也在此论坛中,并且后者刚刚发布了一个具有Bob银行链接的图片原创 2017-10-06 17:03:03 · 20570 阅读 · 3 评论 -
代码生成器
在规模较小的公司里,大部分的项目规模不是特别大,技术实现难度不是很高,关注点更多是在业务功能的开发及保证业务流程的正确性上。当有一个新的项目来时,通常会找一个项目进行copy,删除不用的包和类,然后以此为基础,进行后续的开发,开发某个模块,就copy出一份controller、service、serviceImpl、dao、daoImpl、model、jsp,然后改变类名。 项目内40%以上的代码原创 2017-10-29 20:48:38 · 778 阅读 · 0 评论 -
spring boot 2.0 h2配置
h2是一种内存数据库,可以方便的整合进spring-boot项目内。1. application.properties#配置数据库连接地址spring.datasource.primary.jdbc-url=jdbc:h2:file:./h2/code-generator;AUTO_SERVER=TRUE;DB_CLOSE_ON_EXIT=FALSE#配置数据库驱动spring.data...原创 2018-11-07 13:25:43 · 2009 阅读 · 0 评论 -
spring boot实战之JSP
前后端分离的架构有其优势,但具体情况具体分析,并不是任何时候使用前后端分离架构都是合适的。我最近就体会到其中的坑,因为部门属性的问题,前端项目占比较低,所以公司前端基本上都是新手,结果就是后端接口完成了一个多月,前端还在加班加点的赶。前后端人员的能力和人数与工作量是匹配的,前后端都能hold住时建议使用前后端分离架构,如果前端能力有限或人员较少,那就最好不要采用,这样才能保证项目进度可控。 Spr原创 2017-10-09 18:23:43 · 436 阅读 · 0 评论 -
spring boot项目实战:redis
《spring boot项目实战》之redis使用,本人搭建好的spring boot web后端开发框架已上传至GitHub,欢迎吐槽! https://github.com/q7322068/rest-base1、 添加maven依赖<!-- redis --><dependency> <groupId>org.springframework.boot</groupId> <原创 2017-09-30 18:26:16 · 831 阅读 · 0 评论 -
spring boot项目实战之公共代码抽取
在一个web项目内,会有很多重复性的代码,如果将共性代码进行提取并规范使用,对后续运维和开发是很有帮助的。下面我们来看一下在一个web项目内有那些部分会出现诸多重复性的代码: 1. model内:id、标记删除、创建时间、创建人、修改时间、修改人等字段 2. service内:根据id查询、新增&修改、删除、分页查询等方法 3. dao内: 根据id查询、新增&修改、删除、分页查询等方法mod原创 2017-10-09 16:21:16 · 6111 阅读 · 1 评论 -
sprign boot项目实战:日志
日志是运维、排错的一个重要助手,很多人应该都维护过没有日志的项目,知道排查问题是什么感觉。所以搭建基础项目框架时,自然不能少了日志。日志组件选择从网上各种搜索对比,在log4j2和logback之间选择了log4j2,综合各处评价,log4j2在性能方法有一定优势。但是在一个项目内使用后就发现,spring boot内log4j2不支持spring profile机制,也就是在本地环境、测试环境、预原创 2017-09-26 18:18:10 · 1079 阅读 · 0 评论 -
spring boot项目实战:swagger2在线文档
对于接口服务来说接口文档极其重要,在团队配合和后续维护中占据重要角色。在工作中,使用过excel,wiki来进行接口文档的维护: wiki:缺点是维护起来工作量较大,费时较长,优点是体验较好、检索方便、支持多人协作、支持历史版本查看; excel:初始整理时还好,但在后续多人协作新增功能或调整接口时,维护接口文档就变得极不方便 然后了解到swagger2,可以以编程的方式方便的生成在线文原创 2017-09-27 17:41:13 · 346 阅读 · 0 评论 -
spring boot实战之日期处理
web开发中经常需要对日期进行操作,如字符串日期转long,long型转字符串,日期计算等,提取一个日期处理工具类,提供常见的日期操作可以让开发更轻松一些。毫秒(long)转字符串日期对long型时间进行格式化在web开发中是很经常出现的一个操作,这里主要使用joda-time包内的DateTime来实现,joda-time是时间操作很好的一个工具包。 public final static St原创 2017-10-06 20:09:47 · 9213 阅读 · 0 评论 -
spring boot项目实战-集合操作
集合操作在web应用开发中也是很常见的,目前也有一些比较方便的工具如java.util.Collections、org.apache.commons.collections.CollectionUtils等,但是根据自己公司项目开发中的具体情况提取一套更何用的集合操作工具类也是很有帮助的。1、获取在集合A而不在集合B内的元素(差集)/** * 获取在first集合内而不在second集合内的元素原创 2017-10-07 17:49:13 · 1265 阅读 · 0 评论 -
spring boot项目实战之工具篇(json)
对象转json、json转对象是我们开发过程中经常遇到的,提取一套高效、易用的工具类会让开发过程舒爽不少,下面提供一个基于jackson包的常用json工具方法。1、添加maven依赖<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId>原创 2017-10-07 19:38:19 · 3318 阅读 · 0 评论 -
spring boot项目实战之工具篇(ognl)
当解析复杂的json结构时,ognl是一个很方便的工具,实现基于图对属性的访问,类似于以(user.name | user.depart[0])的方式获取json内的嵌套对象字段值。请看以下示例,你将对ognl的作用有一个更清晰的理解:String json = "{\"user\":{\"name\":\"123\",\"depart\":[1,2]}}";Map<?, ?> map = Jac原创 2017-10-07 20:59:23 · 4268 阅读 · 0 评论 -
spring boot实战之本地jar包引用
部分情况下无法通过maven仓库直接下载需要的jar包,只能讲jar包下载至本地来使用,spring boot框架内通过maven加载第三方jar包可以通过以下方式来实现(本地jar放在lib/目录下),项目会打包为jar包来运行。1、添加maven依赖<dependency> <groupId>org.ansj</groupId> <artifactId>ansj_seg</art原创 2017-10-17 18:22:35 · 4882 阅读 · 0 评论 -
spring boot项目实战:异常处理
异常处理是一个比较基础而又重要的技能点,在团队内最好形成一个统一的规则,避免团队成员不断掉进前辈已经爬出来的坑中。1、全局异常处理spring boot支持配置全局异常处理,记录未捕获的全局异常,这样方便在问题发生时快速定位问题,配置方式如下:@ControllerAdvicepublic class GlobalDefaultExceptionHandler { private stat原创 2017-09-30 13:17:55 · 446 阅读 · 0 评论 -
spring boot项目实战:事务
事务在项目里也是不可或缺的一部分,建议形成一个统一的事务管理规范,不要出现让程序员根据业务自行添加,团队成员能力有高有低,很容易就出现需要事务时没添加事务,这种问题又很难测试出来,运行时却会不定时出现数据的不一致。 想实现类似原spring项目里通过aop方式配置事务的效果,各种尝试,目前还未找到十分可行的方式。测试可用的事务配置方式有两种:在service上添加@Transactional注解原创 2017-09-30 14:58:58 · 496 阅读 · 0 评论 -
spring boot 2.0 jpa多数据源配置
spring boot 1.x内多数据源配置方式参考Spring Boot多数据源配置与使用,但升级到2后该配置无效,以下是自测可行的配置方式(spring boot版本2.0.6.RELEASE)。1. application.properties配置#数据源1spring.datasource.primary.jdbc-url=jdbc:mysql://localhost:3306/te...原创 2018-11-07 13:26:43 · 1271 阅读 · 1 评论