springboot
ohoy
这个作者很懒,什么都没留下…
展开
-
@Transactional底层原理
Transactional注解底层是基于Spring AOP来进行实现的,而Spring AOP,是基于动态代理实现JDK代理和Cglib代理实现的,常考记住。当发生方法内调用的时候,被调用的函数尽管看起来加了事务注解,但是被调用的函数是没有被执行代理到的,导致注解跟没写一样。把@Transactional注解加在private修饰的方法也会一样的现象。解决方案是把方法放到另外一个类里,让Spring自动为其生成代理对象。原创 2024-02-28 10:38:03 · 536 阅读 · 0 评论 -
@ExceptionHandler(value = Exception.class)
【代码】@ExceptionHandler(value = Exception.class)原创 2023-05-17 17:38:03 · 212 阅读 · 0 评论 -
Springboot 添加拦截器
2.实现WebMvcConfigurer 接口把拦截器添加到其中。1.实现HandlerInterceptor 接口。原创 2023-05-17 17:39:20 · 327 阅读 · 0 评论 -
Springboot无法访问JSP 404问题
还需要加入下面这段代码。原创 2023-05-17 22:20:33 · 408 阅读 · 0 评论 -
Springboot将所有文件包括dependencies打成jar包
在pom中加入如下配置。原创 2022-11-27 14:46:32 · 177 阅读 · 0 评论 -
SpringBoot使用Junit做单元测试
测试类的好处是直接点击即可测试,减少了在Controller层调用使用首先引入相应的原创 2022-07-08 11:40:06 · 342 阅读 · 0 评论 -
SpringBoot基础知识整理1.1
SpringBoot基础知识整理原创 2022-06-24 09:53:43 · 141 阅读 · 0 评论 -
一个区域带多个点位的入参数据结构设计
项目中会遇到一个区域对多个点位的数据结构原创 2022-06-02 11:25:23 · 98 阅读 · 0 评论 -
SpringBoot整合integration接收UDP消息信息
概述由于HTTP协议对实时数据传输过于慢,为此采用UDP进行数据传输,来看看如何实现的工具首先需要下载下载地址整合integration首先引入 <dependency> <groupId>org.springframework.integration</groupId> <artifactId>spring-integration-ip</artifactId> </dependency>创建UD原创 2022-05-30 14:06:15 · 1506 阅读 · 2 评论 -
JsonSerializer<String> 载入修改后的数据
概述网上看了一遍对用JsonSerializer对数据的载入,并没有找到想要的东西,自己写搞一篇Function和正则表达式需要用到Java8的Function函数和正则表达式,这里做些介绍来看这样一段代码,在构造函数中用到了函数式编程,它是什么意思呐? USERNAME2(s->s.replaceAll("\\S(\\S*)","*$1")); SensitiveStrategy(Function<String, String> desensitizer) {原创 2022-05-28 21:18:41 · 618 阅读 · 0 评论 -
SpringBoot整合Quartz及Quartz执行过程浅究
概述以前写项目案例的时候用的都是他人项目中搭好的Quartz框架,这次尝试着自己搭建了一下案例搭建的话,不是很难,借着搭建的机会顺带梳理一下SpringBoot的框架原理吧首先的话仍然是配置pom文件pom<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId&原创 2021-03-14 23:49:29 · 556 阅读 · 2 评论 -
SpringBoot使用EasyExcel完成对Excel的上传、带图片的下载
概述项目中对Excel批量导入导出是一个经常用在项目,使用原生的POI对Excel进行操作,一方面很繁琐,另一方面也不容易复用,而阿里开源了EasyExcel项目,很方便的对Excel进行读取和写入,只用简单的几步就好democontroller层 @Autowired private IStudentService iStudentService; @Autowired private ExcelListener excelListener; @PostMap原创 2020-11-13 15:12:54 · 1929 阅读 · 3 评论 -
SpringBoot 测试环境配置错误报错
概述在项目使用单元测试报如下错误Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured.解决看一下你的项目中环境是如何配置的,如果是使用@ActiveProfiles(“projectdev”),注解,则将@ActiveProfile中的字符串改为正确的配置文件名就可以了如果在Add Configuration配置的,则将VM原创 2021-02-26 15:46:48 · 977 阅读 · 0 评论 -
SpringBoot 根据生成代码预览
概述在写后台管理系统的时候,有这样一个功能,它需要对任意一张表生成对表字段的预览类似这样:案例该如何做呐?我们所能看到字段名、字段类型、字段注释以及字段默认值需要从数据库中得到,而java字段名和java字段类型则涉及到数据库到java 实体名 和java 数据类型的转换...原创 2021-02-25 11:55:38 · 140 阅读 · 0 评论 -
SpringBoot 邮件发送逻辑及多邮件发送
概述邮件发送逻辑:在写邮件管理的时候,在思考,邮件的增就是把数据写到数据库中嘛,仔细想想,其实应该是把数据写入到数据库中,并且还要发送邮件才符合,邮件发送的逻辑,也就是说增加一封邮件即向相关人员发送邮件,把发送数据写入到数据库中在做后台管理系统的时候,遇到这样一个需求,如上图,即用户可以实现将邮件发送给多个人,在以往的案例中做的是将邮件发送给一个人,那么实现的话,就可以用一个for循环多次调用发送给单人的接口,在SpringBoot的MimeMessageHelper类中提供了一个能够给多人发送数据的原创 2021-02-24 15:38:33 · 464 阅读 · 0 评论 -
使用SpringBoot AOP 做统一日志管理
概述面向切面编程常用在权限认证、日志、事务处理中。需要理解的是它的三个概念,切入点、连接点、通知,切入点指切面作用于哪,连接点是指与连接点信息相关的连接类,通知是指切面做了一件什么样的事基于注解的切面首先创建一个注解@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface LogAnnotation { String module();}其次创建一个切面,切面的作用是用于记录有原创 2021-02-23 16:36:28 · 168 阅读 · 0 评论 -
SpringBoot文件上传代码迭代及图片回传实现
概述在使用SpringBoot进行文件上传的时候,一般都会按照如下代码进行,如果没有思路的话,底部有一文章连接,可以参考,如下代码倒是可以实现功能了,但是你会看着有一点乱,我们的想法是迭代一下,让代码更加清晰 @PostMapping public ResponseEntity changeHeadImg(@RequestParam MultipartFile files, HttpServletRequest request){ /* 1.图片转存原创 2021-02-20 11:24:34 · 226 阅读 · 0 评论 -
SpringBoot 使用Profile在不同环境中切换
概述在项目中会有在不同环境中进行切换的需求,下面SpringBoot中的环境切换方式做个探究demo第一种方式是使用Spring的Profile进行配置active:为application-dev的后缀dev在启动配置文件中加上如下两行代码:另一种方式是:在环境中加上profile=dev就可以了...原创 2021-02-03 14:23:12 · 184 阅读 · 0 评论 -
SpringBoot 异步执行注解
概述SpringBoot中用@Async注解标记的方法,称为异步方法,它会在调用方的当前线程之外的独立的线程中执行,其实就相当于我们自己new了一个新线程demo@RestController@RequestMapping("user")public class UserController { @Autowired private UserService userService; @GetMapping("test") public void print(){原创 2021-01-28 22:54:05 · 476 阅读 · 0 评论 -
springboot访问多个redis库
概述可能会有这样一个需求,在一个类中,需要多个redistemplate访问不同的redis库,在springboot中以注入方式创建一个redistemplate,另外的redistemplate的话,可以通过new来创建(非注入方式创建)redistemplatedemo引入pom<dependency> <groupId>redis.clients</groupId> <artifactId>jed原创 2021-01-13 10:44:29 · 709 阅读 · 0 评论 -
SpringBoot中获取请求地址
概述在项目中有个需求,需要获取请求地址并对请求地址进行判断,如何获取请求地址呐?可以通过HttpServletRequest来获取System.out.println("URI:"+request.getRequestURI()); System.out.println("ServerName:"+request.getServerName());System.out.println("ServerName:"+request.getServerPort());对应关系如下:.原创 2021-01-12 21:27:20 · 5190 阅读 · 0 评论 -
springboot发送邮件
概述比如说用户下单,或者注册可能会需要向用户发送一封邮件让用户知道下单信息,或者激活账户等操作,这时候就需要用到发送邮件功能了怎么弄呐?申请邮箱首先你得要有一个163邮箱的账号,其他的邮箱的也可以,这里以163邮箱为例,可能注册会需要发短信,发短信可能会花点钱,hhh,没办法,要么不能弄,要么发,所以发吧,免费用邮箱也是个不那么亏的理由好了,进来之后,开启IMAP/SMTP服务和POP3/SMTP服务,可能还是需要发短信,花点钱,花吧,人家帮你弄好了个邮件系统嘛,而且就几角钱,也不多这时候你会原创 2021-01-10 21:46:23 · 152 阅读 · 0 评论 -
Springboot导出pdf
概述iText 是一个开放源代码库,用于在 Java 中创建和处理 PDF 文件demo@GetMapping("getpdf") public ResponseEntity<byte[]> getpdf() throws DocumentException { List<WeiboUserInfo> list = weiboUserInfoService.list(); Document document = new Documen原创 2021-01-10 18:23:08 · 445 阅读 · 2 评论 -
springboot使用opencsv生成csv数据
概述CSV(逗号分隔值)是一种简单的数据格式,其中(大多数)值之间用逗号分隔,每一行代表一个记录。 数据存储在纯文本文件中。 作为电子表格和数据库中使用的导入和导出格式,它非常流行。 OpenCSV 是 Java 的开源,简单 CSV 解析器库pom<dependency> <groupId>com.opencsv</groupId> <artifactId>opencsv</artifactId&g原创 2021-01-10 17:33:15 · 1422 阅读 · 0 评论 -
springBoot导出csv文件
概述需要做一个csv文件的导出功能,大体思路是按照取得数据,对数据进行封装然后数据数据代码/** CSV文件列分隔符 */ private static final String CSV_COLUMN_SEPARATOR = ",";/** CSV文件列分隔符 */private static final String CSV_RN = "\r\n";@GetMapping("exportFansCsv")public void doExport(@RequestBody FansD原创 2020-12-25 10:50:40 · 2405 阅读 · 0 评论 -
SpringBoot定时任务去更新Redis中的数据
概述一个简易版的定时任务更新Redis中的数据demo@Scheduled(fixedRate = 10000) public void schedule(){ //定时更新当月的排行榜数据 LocalDate localDate = LocalDate.now(); ExpendFrontParam expendFrontParam = new ExpendFrontParam(); expendFrontParam.setA原创 2020-12-10 15:39:14 · 2056 阅读 · 0 评论 -
SpringBoot使用LogBack日志系统
demo引入pom<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </dependency>在类中引入日志,并使用它private static final Logger log = LoggerFactor原创 2020-12-14 14:58:42 · 88 阅读 · 0 评论 -
LocalDateTime与LocalDate的入参问题解决
问题使用LocalDateTime入参的时候,在入参的时候报了如下错误JSON parse error: Cannot deserialize value of type java.time.LocalDateTime from String “2020-10-12 20:01:05”: Text ‘2020-10-12 20:01:05’ could not be parsed at index 10;解决加上,@JsonFormat(shape = JsonFormat.Shape.STRING原创 2020-11-11 16:27:15 · 1896 阅读 · 0 评论 -
SpringBoot与Redis整合及使用案例
概述Redis经常被用于项目中,我们来看一下如何整合的案例@GetMapping("getStudentInfo") public Result getStudentInfo(){ List<Student> students = (List<Student>)redisTemplate.opsForValue().get("all" + Student.class.getSimpleName()); // redisTemplate原创 2020-12-01 10:16:51 · 252 阅读 · 0 评论 -
MapStruct入门案例
概述现代软件开发基本都基于分层架构下进行的,而在分层结构下,不同的层会有不同的bean,由于业务需要不同的bean在不同的层中其方法和命名总不能同时保持一致,在不同的层中会涉及到不同bean的转换,如果每次都用set/get方法,总会显得繁琐,而MapStruct框架就为解决不同bean之间的转换提供了很好的解决方案,使用MapStruct可以轻松的在不同bean之间转换案例转换接口,只需要简单的配置,引入@Mapper注解,配置source和target,就可以将Student的name属性映射到S原创 2020-11-17 10:50:50 · 216 阅读 · 0 评论 -
SpringBoot使用内置Spring Task执行定时任务
概述项目中会遇到,需要定时去执行的任务,可以使用Quartz来执行定时任务,也可以使用SpringBoot使用内置Spring Task来执行定时任务,下面使用SpringBoot使用内置Spring Task来执行定时任务demo在类上加上定时任务开启注解加上注解 @Scheduled就可以执行定时任务了,@Componentpublic class InnerTask { @Scheduled(fixedRate = 2000) public String taskTes原创 2020-11-10 16:32:21 · 108 阅读 · 0 评论 -
Quartz定时任务入门案例
概述Quartz是一款任务调度框架,简洁,简单,我们来看它的一个简单的入门案例demo需要说明的一点是,调度类Scheduler可以从StdSchedulerFactory中获取,也可以在SpringBoot中用@Autowired注解获得,在用SpringBoot的开发框架中,推荐使用@Autowired直接注入获得,比较方便,也是官方推荐@RestController@RequestMapping("/quartzController")public class QuartzTestCont原创 2020-11-05 17:05:11 · 239 阅读 · 0 评论 -
文件夹打包成zip,下载到客户端
概述将文件夹,打包成zip,并返回给客户端demo @GetMapping("downloadZip") public void downloadZip(HttpServletRequest request, HttpServletResponse response, @RequestParam("folder") String folder原创 2020-11-05 15:48:57 · 139 阅读 · 0 评论 -
面包屑逻辑
概述有三级分类,点击其中一个要能返回上一个分类1->2->3demo有这样一个页面,点击查询下级分类,就能查到下一级的分类,下一级菜单的查询是根据parentId查的,那么当你点击 private static Map<Integer,Integer> menuBack = new HashMap<>(); private static int count=0; @GetMapping("backMenu") public Lis原创 2020-11-05 15:09:18 · 310 阅读 · 0 评论 -
fastJSON和jackson对组合实体类传入格式的探究
概述在业务分析及数据库设计时,我们可能想将以字符串格式存储存储json数组对象即以字符串格式存储下面对象[{"color":"红色","url":"http://192.168.25.133/group1/M00/00/01/wKgZhVmHINKADo__AAjlKdWCzvg874.jpg"},{"color":"黑色","url":"http://192.168.25.133/group1/M00/00/01/wKgZhVmHINyAQAXHAAgawLS1G5Y136.jpg"}]那么,f原创 2020-11-05 10:35:41 · 183 阅读 · 0 评论 -
使用SpringBoot进行的文件上传、下载
概述项目中经常会涉及到文件上传文件上传单文件上传//上传图片 @RequestMapping("/uploadPic") public void uploadPic(@RequestParam("picName") MultipartFile picName) throws IOException { /*URL resource = ChatstatisController.class.getResource("/resources/pictures");原创 2020-11-04 11:30:09 · 290 阅读 · 0 评论 -
@JSONField、@JsonFormat及@DateTimeFormat的入参与出参
概述首先说一下,测试架构使用的是springboot+mybatis-plus,自动代码生成是基于mybatis-plus弄的,然后出现了几个问题。生成实体类问题首先来数据库和生成实体类的图:有没有发现问题,没有的话,我来说一下,数据库中的create_time字段,在使用mybatis-plus自动代码生成工具生成的时候,它将数据库类型datetime转变成了LocalDateTime,都是时间类型,本身没什么问题。问题在哪? 你要使用@JSONField对createTime进行日期格式化原创 2020-10-08 17:35:45 · 1688 阅读 · 3 评论 -
Base64.decodeBase64的使用
概述Base64.decodeBase64所属包是org.apache.tomcat.util.codec.binary,它基于RFC 2045提供了编码和解码方法。Base64.decodeBase64public static byte[] decodeBase64(final String base64String) { return new Base64().decode(base64String); }这个方法使用decodeBase64进行编码,并返回一个byt原创 2020-09-17 09:42:45 · 30555 阅读 · 0 评论 -
Springboot中的配置类中使用new导致的空指针问题
概述项目中使用的环境是Springboot,项目分为三个模块,一个是common模块,一些公用的类都写在其中,一个是问答模块,另一个是用户模块,需求是当用户进行登录的时候,创建一个token并给前端返回,用户在问答模块中需要对token进行解析,确保用户已经登录。在Application启动类中,使用@Bean配置了JwtUtil类,而使用@Autowired的时候,出现了空指针异常。查阅了相关资料,并且做了修改。原因是我在配置拦截器的时候,使用了new。按网上的说法是由于new和@Autowired不在原创 2020-09-16 15:47:52 · 959 阅读 · 0 评论 -
微服务下使用jjwt生成token签名signwith带来的问题
概述token常用于分布式中,带着很多的用户信息,不存储于服务器,是常见的认证方式之一。在一个网站中,你要回复一个问题,那么就需要验证你的最低权限是用户。引入jar包<dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.6.0</v原创 2020-09-14 11:20:04 · 15075 阅读 · 5 评论