
springboot
文章平均质量分 66
cuit_618
不积跬步无以至千里
展开
-
大数据量的Excel导入和导出
大数据量的Excel导入和导出涉及到的技术poi:使用SXSSFWorkbook,对数据进行分页且批量写入到磁盘(可以是任何outputsteam),减少数据在内存中的存储easyExcel:从磁盘上读取Excel文件,通过监听器的方式,可以读取表头,以及一行一行的数据,当满足一定条件(如1000行),在进行业务逻辑的处理并入库,返回错误数据,并将错误数据回写到Excel中,供用户下载,让用户知道导入失败数据的失败原因。groovy:扩展导入导出标题列配置,基础导入导出配置为一个被ExportEx原创 2021-11-06 22:42:39 · 3177 阅读 · 0 评论 -
javax.validation优雅的数据校验和spring参数解析器的使用
maven依赖<dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>1.1.0.Final</version></dependency><!-- hibernate validator--><dependency>原创 2021-06-27 16:08:47 · 1091 阅读 · 0 评论 -
springboot统一请求参数修改(可复制HttpServletRequest流)
springboot统一请求参数修改http请求对象HttpServletRequest中的数据要么通过流(json请求时)或者参数的形式(form表单)向后台传输数据,如果是通过流的方式向后端传输数据,那么在后端读取数据都是一次性的,如果在拦截器或者AOP中读取过,则不能映射到controller的参数。但可以通过在过滤器中定义可复制的request进行读取,而不影响controller参数的映射。本文主要介绍如何通过过滤器实现可复制流来解决实际业务中遇到的相关问题。假设这种场景:我需要将请求参数中的原创 2021-05-28 15:10:43 · 5391 阅读 · 0 评论 -
springboot(4.6)springboot框架下开发类似Feign实现外部服务的访问
概述虽然当前很多项目都以微服务为主,但也会存在调用外部接口的情况,如公司项目调用外部公司提供的接口。这种情况下,一般我们会使用httpclient进行远程接口调用,但能不能对httpclient进行封装,像Feign那样访问远程外部接口呢?本文就是模拟Feign,实现远程外部接口的访问。本文和前面的《springboot(4.4)集成mybatis原理分析》有些类似,可以一起进行阅读参考,但本文功能更完善,可以直接复制代码进行修改后用于生产。feignclient修饰的接口如下:@FeignClie原创 2020-12-05 23:20:10 · 1044 阅读 · 0 评论 -
springboot(4.5)springcloud远程调用异常统一处理
概述在目前微服务流行的年代,稍微大点的项目都会使用微服务架构模式。本文主要记录springcloud远程调用返回结果的异常统一处理。应用篇假设微服务的返回结果有如下封装:@Datapublic class ApiResponse<T> { /** * 返回码 0 为成功 其他为异常 */ private int code; /** * 异常提示信息 */ private String message; /*原创 2020-12-05 23:04:38 · 2417 阅读 · 0 评论 -
springboot(4.4)集成mybatis原理分析
在springboot集成mybatis项目中,我们只需要在启动类上加上@MapperScan注解,让spring在启动时去扫描某路径下的所有mapper接口,然后就能实现mapper接口对应的增删改查功能,但mapper类,只是一个接口,我们并未为其写具体的实现,那么它是怎么被实例化的呢?本文就从源码的角度来解析这一过程。通过本文的学习,我们还能举一反三的让我们以后写自己的功能时,更好的和spring进行整合。理论上而言,应该是这样的:@MapperScan注解告诉spring去扫描路径下的所有m原创 2020-08-15 23:16:42 · 383 阅读 · 0 评论 -
springboot(4.3)自动装配
springboot自动装配springboot是一个以spring framework为基础,用于快速构建应用程序的框架。也就是说springboot拥有springframework的所有功能,并自己还提供了一系列用于简化配置、自动装配等功能。其中,自动装配个人认为是springboot框架的核心,本文主要学习和总结下springboot的自动装配功能和自定义starter。利用springboot搭建一个spring+mybatis的web项目配置pom.xml文件<projec原创 2020-07-26 15:51:55 · 429 阅读 · 0 评论 -
springboot(4.2) springAOP
spring AOPspring家族包括很多产品和组件,比如spring-framework、springboot、springcloud等等,其中spring-framework是springboot的基础,而springboot又是springcloud的基础,本文就spring-framework5.x相关知识进行学习。本文主要以spring注解的方式进行学习和总结。在spring-framework中,最为核心的组件为IOC和AOP,本文就AOP的基础知识进行学习和总结。文章下面所谓的sprin原创 2020-07-26 15:38:37 · 312 阅读 · 0 评论 -
springboot(4.1) springIOC
springIOC基础知识spring家族包括很多产品和组件,比如spring-framework、springboot、springcloud等等,其中spring-framework是springboot的基础,而springboot又是springcloud的基础,本文就spring-framework5.x相关知识进行学习。本文主要以spring注解的方式进行学习和总结。在spring-framework中,最为核心的组件为IOC和AOP,本文就IOC的基础知识进行学习和总结。文章下面所谓的sp原创 2020-07-26 15:04:25 · 331 阅读 · 0 评论 -
springboot集成mybatis环境搭建
maven依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>1.5.5.RELEASE</version>原创 2020-07-04 11:46:36 · 850 阅读 · 0 评论 -
springboot整合Shiro
Shiro与springboot整合概述Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、加密和会话管理,使用shiro可以非常方便的完成项目的权限管理模块开发三个核心组件:Subject:当前操作用户,可以是登录用户,也可以是第三方访问程序SecurityManager:管理所有用户的安全操作,包括执行身份验证、授权、加密和会话管理Realms:当对用户执行认证和授权验证时,Shiro会从应用配置的Realm中查找用户及其权限信息,本质上是一个实现了查询用户权限原创 2020-06-21 15:54:31 · 754 阅读 · 0 评论 -
springboot(7)集成缓存技术之Redis
添加jar包依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> Redis...原创 2018-11-13 15:44:34 · 264 阅读 · 0 评论 -
Spring boot(6) 业务插件开发
本文主要介绍使用springboot动态加载类、jar包,这些类和jar包不在classpath下,而是在磁盘的某个位置。之前接触过Solr,而Solr提供的插件式开发方式相当灵活,Solr对开发者提供了一个核心api jar包,开发者如果想扩展Solr某一项功能比如 中文分词,只需要继承Solr提供的分词接口添加自己的实现,然后把自己的分词jar包拷贝到Solr指定目录,并在solr配置文件...原创 2018-11-07 17:57:36 · 10470 阅读 · 1 评论 -
springboot(1)+jpa(hibernate)配置多数据源 分布式事务
springboot+jpa配置多数据源功能情况:实现系统对多数据源的操作。实现系统对多数据源的分布式事务管理,包括事务的提交和回滚。本文与网络上其他实现方案不一样,网络上其他很多方案都是基于将不同表数据存储到不同数据源中,从不同数据源读取相应数据。试想,如果要将同一数据实体如用户信息存储在不同数据源中(数据横向划分时),或者想根据条件查询不同数据源中的用户信息时,或者需要灵活实现...原创 2018-10-16 17:01:48 · 6148 阅读 · 0 评论 -
springboot(2)生命周期和监听器
Spring boot应用,这里具体的来说,是指类SpringApplication,在其run()方法运行过程中,主要围绕所使用ApplicationContext对象的生命周期事件,应用了一个事件监听器机制提供了相应的程序扩展入口点,开发人员可以基于此机制,在相应的事件发生时执行特定的逻辑。SpringApplication应用的该事件监听器机制主要利用如下两个类/接口 :Spring...原创 2018-10-31 14:54:25 · 9337 阅读 · 1 评论 -
springboot(3) 系统初始化Initializer ApplicationContextInitializer
ApplicationContextInitializer是Spring框架原有的概念, 这个类的主要目的就是在ConfigurableApplicationContext类型(或者子类型)的ApplicationContext做refresh之前(prepareContext时),允许我们对ConfigurableApplicationContext的实例做进一步的设置或者处理。spring...原创 2018-10-31 17:34:45 · 2511 阅读 · 0 评论 -
springboot(4) 启动过程及实现对bean动态代理源码分析
在springboot项目中,如果在类上加有@Component、@service等注解时,spring会为该类生成一个jdk或cglib的动态代理,并缓存到beanFactory中,当其他类需要注入该类时,实际得到的是该类的代理,本文主要将从源码的角度介绍springboot启动过程以及如何利用jdk或cglib生成目标对象的代理类。1.springboot启动过程分析springboo...原创 2018-11-05 09:00:21 · 3614 阅读 · 0 评论 -
springboot(5)提供的扩展接口
BeanPostProcess接口在每个bean初始化成前后做操作。如果想在系统中的所有(或者部分bean)初始化前后,做些事情,可继承该接口,使用方式如下图示例:就这样,在每个实例初始化前后,将会执行相关打印。InstantiationAwareBeanPostProcessor接口在Bean实例化前后做一些操作。该接口继承了BeanPostProcess接口,...原创 2018-11-06 11:31:15 · 2801 阅读 · 0 评论