Spring Boot
文章平均质量分 58
使用spring boot完全替代spring
free_java
这个作者很懒,什么都没留下…
展开
-
spring boot2 (40)- JWT token
本篇介绍JWT token的生成和解析的基本方法。原创 2023-02-26 14:37:50 · 368 阅读 · 1 评论 -
spring boot2 (39)- 统一返回结果和ResponseBodyAdvice
本篇介绍rest接口,如何返回统一的状态码、消息、数据等。原创 2023-02-18 10:30:02 · 466 阅读 · 0 评论 -
spring boot2 (38)- @Validated 参数验证
本篇介绍spring boot如何验证传入的参数,是否合法。pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency>独立参数验证此时,如果请求没有传参,abc为空,就会报500验证异常。原创 2022-03-12 14:33:14 · 979 阅读 · 0 评论 -
spring boot2 (37)-分布式session和cookie跨域
本篇将介绍如何实现同域集群之间共享session,以及通过cookie跨域实现不同二级域名共享session。spring sessionsession通常是保存在服务器内存中的,而在集群环境下,用户第一次请求被发送到了A服务器,并写入session数据。第二次请求被发送到了B服务器,也写入session数据。之后的用户请求无论发送到A或B,其session数据都是有缺失的。spring session就是将session保存到数据库或缓存中,默认是redis。不管有多少服务器,都通过redis读写原创 2020-07-18 10:43:11 · 1431 阅读 · 0 评论 -
spring boot2 (36)-xml数据的请求和响应、XmlMapper转换
虽然现在已经是json的天下,但是仍然有一些厂商接口要求xml格式。本篇将介绍如何接收和响应及转换xml格式。pom.xml <dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dat...原创 2018-12-01 10:14:56 · 5037 阅读 · 3 评论 -
spring boot2 (35)-actuator监控
关于actuator的具体内容参考第21篇,这里不再重复。当时是spring boot 1.x版本,现在spring boot2.x中其主要内容基本没变,只是相关端点配置请求路径有所不同。本篇仅介绍这些变化的配置。开放端点1.x需要配置敏感端点,2.x改成了以下配置,* 可开户所有端点。management.endpoints.web.exposure.include=*/act...原创 2018-08-05 19:08:57 · 580 阅读 · 0 评论 -
spring boot2 (34)-task任务调度
通常后台程序是在用户触发以后才执行的,而有些特定功能,我们希望在一个特定时间由系统自己触发执行,比如每月1日统计上月度的相关数据等。fixedRate间隔执行@EnableScheduling:配置spring boot开启任务调度。 @Scheduled:在任意会被扫描的类方法加上这个注解,该方法会根据配置的时间来调度执行。 (fixedRate = 5000):每隔5秒执行一次...原创 2018-07-22 17:25:26 · 772 阅读 · 0 评论 -
spring boot2 (33)-兼容 jar包和war包部署
spring boot默认部署方式是jar包,但有时候可能运维使用的是tomcat之类的容器,并要求提交war包。本篇将介绍jar包和war通用的配置方式。pom.xml修改打包方式为war包<packaging>war</packaging>spring boot中已经集成了spring-boot-starter-tomcat内置容器,这里覆盖配置主要是为了设置provi...原创 2018-07-14 16:30:40 · 1577 阅读 · 0 评论 -
spring boot2 (32)-WebSocket和stomp消息
WebSocket可实现浏览器和服务器之间的通信,如在线聊天,消息推送等,其基于tcp协议来传输数据。而stomp是一种更高级的协议,可以更加方便的实现WebSocket。broker和客户端客户端可以是任何语言,如js,php等,只须使用stomp协议来收发消息,broker可对消息进行处理或转发等。本篇将介绍以spring boot实现broker,以js实现客户端。pom.xml <...原创 2018-06-17 14:20:11 · 2450 阅读 · 2 评论 -
spring boot2 (31)-cors跨域请求
假如我们开发了一些接口部署到网上,而我们的客户也有一个网站,会通过ajax请求我们的接口,并将结果展示到他们的网站,这就是跨域。直接请求No Access-Control-Allow-Origin我现在192.168.112.1上启动一个客户项目,用jquery向接口服务器192.168.112.150:8080/test发起ajax请求 $.ajax({ url : 'http://192....原创 2018-06-10 15:28:01 · 1343 阅读 · 0 评论 -
spring boot2 (30)-Jackson和ObjectMapper
在spring boot中,默认使用Jackson来实现java对象到json格式的序列化与反序列化。如第3篇讲的@RequestBody和@ResponseBody的转换,最终都是由Jackson来完成的。ObjectMapper基本用法Jackson的转换是通过ObjectMapper对象来实现的,spring boot内部自动配置了一个ObjectMapper对象,我们可以直接用。 @Aut...原创 2018-05-27 14:58:23 · 11982 阅读 · 1 评论 -
spring boot2 (29)-ApplicationRunner和CommandLineRunner初始化
上一篇讲了缓存,当访问缓存时,发现没有数据就查询数据库并写入缓存。也可以在项目启动时就直接查询并写入缓存,以免用户请求的时候再去查询,此时就可以使用ApplicationRunner或者CommandLineRunnerCommandLineRunner用法很简单,只要实现该接口,启动项目后会立即使用run方法,args是启动参数。@Componentpublic class InitialRu...原创 2018-05-19 10:22:36 · 1286 阅读 · 0 评论 -
spring boot2 (28)-cache缓存
数据库的数据是存储在硬盘上的,频繁访问性能较低。而缓存数据存储在内存中,访问性能比硬盘快了一个数量级。如果将一些需要频繁查询的热数据放到缓存中,可以大大减轻数据库的访问压力。pom.xml<dependency> <groupId>org.springframework.boot</groupId> <artifactId>sprin...原创 2018-05-06 11:19:05 · 8323 阅读 · 2 评论 -
spring boot2 (27)-yaml配置
除了properties文件,spring boot同时支持用yaml文件来进行参数配置,其配置结构更加清晰优雅。基本格式上一篇在application.properties中数据源配置如下spring.datasource.url=jdbc:mysql://localhost:3306/testspring.datasource.username=rootspring.datasource....原创 2018-04-21 14:25:40 · 1778 阅读 · 0 评论 -
spring boot2 (26)-hikari、多个数据源/mybatis/事务
我在12篇讲过,spring boo1.x版本中,默认使用tomcat数据源,第二候选是hikari,虽然其性能更好,但是当时才刚刚出来需要时间的考验。而在spring boot2.x版本中,hikari终于荣升为默认数据源,已被包含在spring boot的jdbc依赖组件中。参数配置在properties中配置以下参数,前三个是通用配置,注意第四个参数maximumPoolSize有一个hik...原创 2018-04-14 11:33:29 · 15626 阅读 · 6 评论 -
spring boot2 (25)-RestTemplate客户端
关于rest可参考第3篇,而RestTemplate就是由spring提供的,用于在后台进行rest请求的,比繁琐的HttpClient要方便很多。pom.xml从本篇开始,后续文章都使用spring boot2,要求jdk版本至少8。之前的文章仍然适用于低版本的jdk,继续保留。spring boot 1和2大部分用法是一样的,只是有些功能做了细节调整。如默认连接池从tomcat变成了Hikar...原创 2018-04-06 11:38:16 · 5306 阅读 · 0 评论 -
spring boot(24)-test测试
如果直接用junit去测试一个方法,即使测试成功,这个方法在spring中运行时也可能会有不同的结果,因为spring是一个集成环境,会加载很多东西,从而影响最终结果。本篇将介绍spring boot的集成测试,需要首先理解maven测试pom.xml org.springframework.boot spring-boot-starter-test test原创 2018-01-20 11:58:42 · 1639 阅读 · 0 评论 -
spring boot(23)-文件上传与下载
先说上传,在Servlet3中提供了Part来简化上传功能,而在spring boot内部默认整合了Part来完成上传。html只需注意form要设置一个参数enctype="multipart/form-data",才能上传文件,其他不多说了。<!DOCTYPE html><html><head><meta charset="UTF-8">...原创 2017-12-16 10:54:00 · 2467 阅读 · 0 评论 -
spring boot(22)-profile环境配置
当你在公司时,可能会用公司内网的数据库进行开发,而当你回家时,就只能用本机的数据库了。不停的修改环境配置会很麻烦,profile的作用就是同时配置多个环境,在不同的环境使用不同的配置。properties环境配置第五篇讲过在application.properties中进行参数配置,现在如果要配置不同环境的properties,可以使用application-{环境名}.propertie原创 2017-11-18 10:00:24 · 1449 阅读 · 2 评论 -
spring boot(21)-actuator监控
actuator是spring boot中非常重要的一大功能,主要用于在项目运行时,查看运行中的各种配置及参数等pom.xml org.springframework.boot spring-boot-starter-actuator 查看端点在pom.xml中添加了以上配置之后,启动时控制台会打印如下信息,mapped后面的路原创 2017-10-08 09:31:19 · 5966 阅读 · 0 评论 -
spring boot(20)-开发工具devtools
pom.xml org.springframework.boot spring-boot-devtools 修改代码自动重启只要引入了开头的依赖,自动重启就生效。如上图,在开发时修改代码,会重载java代码,而不会重载依赖jar,这可以大大减少开发重启的时间。然而有一些大型项目,代码量多,业务复杂,自动重启仍然要花很长时间。这时,如果你的项目原创 2017-09-24 09:16:41 · 3162 阅读 · 0 评论 -
spring boot(19)-拦截器
动态资源和静态资源拦截器可以算是aop的一种实现,专门拦截对动态资源的后台请求,也就是拦截对控制层的请求,主要用于判断用户是否有权限请求后台。拦截器不会拦截静态资源,如spring boot的默认静态目录resources/static,请求其目录下的html,js,图片等都不会被拦截。因为我们的业务机密数据都在后台,而前端的静态资源可以分离出来放在静态服务器以缓解后台服务器的压力,不过这不是原创 2017-09-23 12:40:41 · 2804 阅读 · 4 评论 -
spring boot(18)-servlet、filter、listener
servlet、filter、listener的用法就不讲了,只讲如何在spring boot中配置它们。有两种方式,一种是从servlet3开始提供的注解方式,另一种是spring的注入方式servlet注解方式servlet3.0以前,servlet、filter、listener需要在web.xml中配置,从servlet3.0开始,支持通过类注解进行配置。在spring boot中原创 2017-09-09 10:25:15 · 2558 阅读 · 0 评论 -
spring boot(17)-@Async异步
验证码的异步机制上一篇讲过可以用邮件发验证码,通常我们在某网站发验证码时,首先会提示验证码已发送,请检查邮箱或者短信,这就是图中的1和3。然而此时查看邮箱或短信可能并没有收到验证码,往往要过几秒种才真正收到,这就是图中的2和4。2和4所消耗的时间比1和3要多,如果是同步,先执行4后执行3,那么这个请求将一直占用后台服务器。如果是异步,可以在第一时间通知用户已发送,并释放请求,而完全不用原创 2017-08-26 10:11:32 · 2322 阅读 · 5 评论 -
spring boot(16)-mail发邮件
上一篇讲了如何处理异常,并且异常最终会写入日志。但是日志是写在服务器上的,我们无法及时知道。如果能够将异常发送到邮箱,我们可以在第一时间发现这个异常。当然,除此以外,还可以用来给用户发验证码以及各种离线消息等pom.xml org.springframework.boot spring-boot-starter-mail application.pro原创 2017-08-19 10:49:48 · 2139 阅读 · 0 评论 -
spring boot(15)-异常处理
异常传递如图:服务层和dao层的异常最终都会到达控制层,控制层的异常则会自动记入logback日志系统。所以我们应该在控制层来捕获系统异常捕获控制层异常import org.slf4j.Logger;import org.slf4j.LoggerFactory;@Controllerpublic class SampleController { //用来手原创 2017-08-12 10:21:54 · 2117 阅读 · 6 评论 -
spring boot(14)-pom.xml配置
继承spring-boot-starter-parent要成为一个spring boot项目,首先就必须在pom.xml中继承spring-boot-starter-parent,同时指定其版本 org.springframework.boot spring-boot-starter-parent 1.5.6.RELEASE 环境参数在普通maven项目原创 2017-08-05 16:53:12 · 12258 阅读 · 0 评论 -
spring boot(13)-logback和access日志
logbacklogback出自log4j的作者,性能和功能相比log4j作出了一些改进,而配置方法和log4j类似,是spring boot的默认日志组件。在application.properties文件中可以进行一些简单的日志配置,参考第五篇。如果要作一些更详细的配置,需要在resources目录下配置logback-spring.xmllogback-spring.xmls原创 2017-07-29 10:40:36 · 7230 阅读 · 0 评论 -
spring boot(12)-数据源配置原理
本篇讲的不仅是数据源配置,这也是spring boot实现自动配置的一部分。要理解数据源的配置原理,首先要理解第十篇tomcat连接池的配置数据源配置源码这里截取org.springframework.boot.autoconfigure.jdbc.DataSourceConfiguration的部分源码,中文注释都是我加的,主要介绍Tomcat和Hikari连接池如何自动配置切换,其他数原创 2017-07-22 10:33:18 · 4317 阅读 · 0 评论 -
spring boot(11)-druid监控
druiddruid是和tomcat jdbc一样优秀的连接池,出自阿里巴巴。关于druid连接池参数,参考https://github.com/alibaba/druid/wiki/DruidDataSource%E9%85%8D%E7%BD%AE%E5%B1%9E%E6%80%A7%E5%88%97%E8%A1%A8除了连接池,druid还有一个很实用的监控功能,这就是下面要讲的原创 2017-07-15 08:59:10 · 4827 阅读 · 4 评论 -
spring boot(10)-tomcat jdbc连接池
默认连接池tomcat jdbc是从tomcat7开始推出的一个连接池,相比老的dbcp连接池要优秀很多。spring boot将tomcat jdbc作为默认的连接池,只要在pom.xml中引入了spring boot 的jdbc组件,就会自动引入tomcat jdbc连接池。关于引入jdbc和数据库的连接配置,参考第六篇默认参数以下是org.apache.tomcat.jdbc原创 2017-07-09 11:18:26 · 17954 阅读 · 4 评论 -
spring boot(9)-mybatis关联映射
一对多查询type表的某一条数据,并且要同时查出所有typeid与之配置的user,最终要得到一个以下类型的Type对象public class Type { String id; String name; List users;dao层 @Select("select * from user where typeid = #{typeid}") public List fin原创 2017-06-30 08:46:10 · 10906 阅读 · 6 评论 -
spring boot(8)-mybatis三种动态sql
脚本sqlXML配置方式的动态SQL我就不讲了,有兴趣可以自己了解,下面是用的方式把它照搬过来,用注解来实现。适用于xml配置转换到注解配置@Select("select * from user where id = #{id} ") public List findUserById(User user); 很明显,在java中写xml可读性和维护性太差,尤其当SQL很长时,这样原创 2017-06-24 09:04:14 · 29028 阅读 · 11 评论 -
spring boot(7)-mybatis全注解化
关于配置数据库可以参考上一篇文章,这里只讲mybatispom.xml org.mybatis.spring.boot mybatis-spring-boot-starter 1.3.0 com.github.pagehelper pagehelper-spring-boot-starter 1.1.1基本SQL操作sp原创 2017-06-10 09:09:52 · 26738 阅读 · 8 评论 -
spring boot(6)-JdbcTemplate访问数据库
pom.xml添加jdbc模块和mysql依赖 org.springframework.boot spring-boot-starter-jdbc mysql mysql-connector-java application.propertiesspring boot的jdbc模块会加载以下参数,并且根据url可以识别并自原创 2017-05-28 08:44:20 · 5675 阅读 · 0 评论 -
spring boot(5)-properties参数配置
application.propertiesapplication.properties是spring boot默认的配置文件,spring boot默认会在以下两个路径搜索并加载这个文件src\main\resourcessrc\main\resources\config配置系统参数在application.properties中可配置一些系统参数,sprin原创 2017-05-20 11:03:50 · 5228 阅读 · 6 评论 -
spring boot(4)-html和templates
静态页面spring boot项目只有src目录,没有webapp目录,会将静态访问(html/图片等)映射到其自动配置的静态目录,如下/static/public/resources/META-INF/resources如下,在resources建立一个static目录和index.htm静态文件,访问地址 htt原创 2017-05-13 09:57:38 · 77938 阅读 · 33 评论 -
spring boot(3)-Rest接口
jsp技术已经不再推荐,现在更加流行前后端分离,即静态html+ rest接口(json格式),具体原因本篇不讨论,本博客只讲html+rest模式。老版本rest用spring mvc可以很容易的实现json格式的rest接口,以下是spring老版本的用法,在spring boot中已经自动配置了jackson//注册一个spring控制层bean@Controllerpublic c...原创 2017-05-06 16:34:14 · 8378 阅读 · 2 评论 -
spring boot(2)-@SpringBootApplication详解
pom.xml org.springframework.boot spring-boot-starter-parent 1.5.2.RELEASE org.springframework.boot spring-boot-starter-web Run.javapackage hello;import org.spring原创 2017-04-29 08:05:15 · 24963 阅读 · 0 评论 -
spring boot(1)-Hello World
spring boot简介spring boot是由spring官方推出的一个新框架,对spring进行了高度封装,是spring未来的发展方向。spring boot功用众多,其中最主要的功能就是自动配置,简化开化,下面通过一个hello world来看一下它究竟有多简,需要有一定的spring和maven基础环境eclipse:4.5(mars)jdk:spri原创 2017-04-15 19:01:09 · 8086 阅读 · 5 评论