202010-08 SpringBoot登录拦截配置详解(实测可用) 背景:写一个用户登录拦截,在网上找了一圈没找到好用的,于是自己试验了一下,总结出来,分享给大家。1.自定义登录拦截器LoginInterceptorpublicclassLoginInterceptorimplementsHandlerInterceptor{@OverridepublicbooleanpreHandle(HttpServletRequestrequest,HttpServletResponseresponse,Objecthandler)throwsException{//这里是关键UserloginUser=(User)request.getSession().getAttribute("... 继续阅读 >
202010-08 springboot~nexus项目打包要注意的地方示例代码详解 一个使用maven制作框架包时,会有一个主项目,然后它有多个子项目框架组成,很少一个工具包一个工程,像springboot,springcloud都是这种结构,主项目用来管理一些依赖包的版本,这对于框架型项目来说是很必要的,而对于业务项目来说,因为目前都是推荐使用微服务的轻量方式,所以不建议用多项目绑定一个大项目的方式,而都是一个服务一个项目。主pom文件主项目的pom文件用来管理依赖包版本,一般在dependencyManagement节点去声明它... 继续阅读 >
202010-08 Java springboot Mongodb增删改查代码实例 1、添加依赖复制代码<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId><version>2.1.6.RELEASE</version></dependency>完整pom.xm文件<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.... 继续阅读 >
202010-08 SpringBoot整合Swagger3生成接口文档过程解析 前后端分离的项目,接口文档的存在十分重要。与手动编写接口文档不同,swagger是一个自动生成接口文档的工具,在需求不断变更的环境下,手动编写文档的效率实在太低。与新版的swagger3相比swagger2配置更少,使用更加方便。一、pom文件中引入Swagger3依赖<dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version></dependency>二、Application上面加入@... 继续阅读 >
202010-08 SpringBoot2.x入门教程之引入jdbc模块与JdbcTemplate简单使用方法 前提这篇文章是《SpringBoot2.x入门》专辑的第7篇文章,使用的SpringBoot版本为2.3.1.RELEASE,JDK版本为1.8。这篇文章会简单介绍jdbc模块也就是spring-boot-starter-jdbc组件的引入、数据源的配置以及JdbcTemplate的简单使用。为了让文中的例子相对通用,下文选用MySQL8.x、h2database(内存数据库)作为示例数据库,选用主流的Druid和HikariCP作为示例数据源。引入jdbc模块引入spring-boot-starter-jdbc组件,如果在父POM全局管... 继续阅读 >
202010-08 SpringBoot 入门教程之引入数据传输层的方法 我们现在操作的数据直接就使用了实体类,假如我们输出的用户对象需要包含用户拥有的权限列表,那么我们怎么封装呢?直接封装进实体类中显然不行,因为实体类的职责就是提供与数据库表字段一一对应的映射关系,所以我们还需要封装出一层数据传输层DTO(DataTransferObject),通过它暴露给外部,这样我们就能高度定制化我们需要输出的数据而不会影响到实体类。在项目中创建dto目录,新建UserDto.java文件:packagecom.foxes... 继续阅读 >
202010-08 Springboot+Vue+shiro实现前后端分离、权限控制的示例代码 本文总结自实习中对项目的重构。原先项目采用Springboot+freemarker模版,开发过程中觉得前端逻辑写的实在恶心,后端Controller层还必须返回Freemarker模版的ModelAndView,逐渐有了前后端分离的想法,由于之前,没有接触过,主要参考的还是网上的一些博客教程等,初步完成了前后端分离,在此记录以备查阅。一、前后端分离思想前端从后端剥离,形成一个前端工程,前端只利用Json来和后端进行交互,后端不返回页面,只返回Json数据... 继续阅读 >
202010-08 SpringBoot新特性之全局懒加载机制 关于延迟加载在Spring中,默认情况下所有定的bean及其依赖项目都是在应用启动时创建容器上下文是被初始化的。测试代码如下:@Slf4j@ConfigurationpublicclassDemoConfig{publicDemoConfig(){log.warn(">>>demoConfig被初始化>>>");}}启动应用日志:[main]o.a.c.c.C.[Tomcat].[localhost].[/]:InitializingSpringembeddedWebApplicationContext[main]w.s.c.ServletWebServerApplicationContext... 继续阅读 >
202010-08 SpringBoot读取配置文件常用方法解析 首先回忆一下在没有使用SpringBoot之前也就是传统的spring项目中是如何读取配置文件,通过I/O流读取指定路径的配置文件,然后再去获取指定的配置信息。传统项目读取配置方式读取xml配置文件publicStringreadFromXml(StringxmlPath,Stringproperty){SAXReaderreader=newSAXReader();Documentdoc=null;try{doc=reader.read(newFile(xmlPath));}catch(DocumentExceptione){e.printStackTrace();... 继续阅读 >
202010-08 SpringBoot内部外部配置文件加载顺序解析 内部配置加载顺序SpringBoot启动会扫描以下位置的application.properties或者application.yml文件作为Springboot的默认配置文件?file:./config/?file:./?classpath:/config/?classpath:/优先级由高到底,高优先级的配置会覆盖低优先级的配置;SpringBoot会从这四个位置全部加载主配置文件;互补配置;还可以通过spring.config.location来改变默认的配置文件位置项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来... 继续阅读 >
202010-08 IDEA创建springboot + mybatis项目全过程(步骤详解) 鉴于隔很久再在IDEA新建springboot项目时,会出现对步骤不确定的情况,因此,写下这篇博客记录创建一个可运行的springboot+mybatis项目的全过程。步骤如下:1.打开IDEA2.File==>new==>project,如图:3.选择springInitializr==>右边的ProjectSDK我选的是我已经安装的1.8版本,其他默认==>点击next4.填写Group(自己随意就行,我的是cn+个人英文名+study)==>填写Artifact(也是自己随意就行,这个也是你的项目名... 继续阅读 >
202010-08 springboot+thymeleaf+druid+mybatis 多模块实现用户登录功能 项目代码:https://github.com/bruceq/supermarket项目结构:依赖关系:common:公共层,无依赖dao:数据层,依赖commonservice:服务层,依赖dao、commonweb:应用层,依赖dao、common、service注:启动类在web层中父依赖pom<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apach... 继续阅读 >
202010-08 SpringBoot+mybatis+thymeleaf实现登录功能示例 1.项目文件目录一栏2.开始工作先按照上图建立好相应的controller,mapper等文件。接着进行一个配置首先是application.propertiesserver.port=8080#启动端口#加载Mybatis配置文件mybatis.mapper-locations=classpath:mapper/*.xml#数据源必填项spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/studentmanage?useUnicode=true&characterEncoding=utf-8&ser... 继续阅读 >
202010-08 SpringBoot 统一请求返回的实现 目前我们的返回是直接把实体类扔给请求方,这样很不友好,一方面没有统一的格式,二来请求方不知道请求成功与否,没有一个可以判断的东西,也没有说明性的返回。本篇就来为所有接口提供一个统一的友好返回。确定返回结构首先,我们先确定好我们接口返回的格式是什么样的,然后再一步一步实现下面的。{"code":200,"msg":"ok","data":""}code字段表示状态码,调用方根据该码来作为后续逻辑的依据,比如code值为200表... 继续阅读 >
202010-08 SpringBoot 定制化返回数据的实现示例 此时我们的返回结构如下:{"code":200,"msg":"ok","data":{"id":1,"username":"steve","secretKey":"xxx","expiredAt":null,"createdAt":"2020-07-07T06:09:15"}}但上面有几个问题: 我希望字段是以下划线命名方式,也就是createdAt改成created_at这样 我希望某些字段值的输出格式可以自定义,比如日期类型我希望输出是yyyy-MM-ddHH:mm:ss 我不希望secretKey这... 继续阅读 >
202010-08 解析SpringBoot项目开发之Gzip压缩过程 为了减少数据在网络中的传输量,从而减少传输时长,增加用户体验,浏览器大都是支持Gzip压缩技术的,http的请求头Accept-Encoding:gzip,deflate就表示这次请求可以接受Gzip压缩后的数据,图片不要进行压缩,因为图片完全可以在项目开发中使用压缩后的图片。压缩会有一定的CPU性能损耗。下面介绍几种Gzip压缩方式1.SpringBoot开启Gzip压缩在application.properties中加入如下配置:server.compression.enabled=trueserver.compr... 继续阅读 >