Spring Boot采坑记录

简介: springboot问题 前端thymeleaf,使用jar包模式运行后找不到页面 解决方法: 代码中所有直接返回String进行页面跳转的改为使用ModelAndView 集成shiro之后自定义Realm中注入的service事务,缓存失效 解决方法:在注入的service上增加@Lazy注.

springboot问题

  1. 前端thymeleaf,使用jar包模式运行后找不到页面 
    解决方法: 代码中所有直接返回String进行页面跳转的改为使用ModelAndView
  2. 集成shiro之后自定义Realm中注入的service事务,缓存失效 
    解决方法:在注入的service上增加@Lazy注解,原理请参考此博客
  3. spring事件机制使用service继承ApplicationListener的方式处理事务导致项目启动报错 
    The bean 'xxx' could not be injected as a 'xxxx' because it is a JDK dynamic proxy that implements: org.springframework.context.ApplicationListener 
    有的人说需要在配置文件中增加spring.aop.proxy-target-class=true此配置,但是经尝试无法解决. 
    解决方法:使用注解的方式来监听事件,例如: 
    @EventListener 
    public void listenInformEvent(InformEvent informEvent) {}
  4. springboot启动tomcat临时目录随机,导致上传文件的功能不能正常使用 
    解决方法:增加配置手动指定docBase,出处 
5. springboot上传本地图片不能及时展示(不用上面的方式存储文件),刷新页面后正常展示

解决方法:

1.存储文件时使用不加"/"的文件名例如"upload/test.jpg"

2.在WebMvcConfigurer中配置目录对应关系registry.addResourceHandler("/upload/**").addResourceLocations("file:upload/")


问题原因: 静态文件是在项目启动时加载的,不重新请求不会加载,参考:stackoverflow中VK321这位大哥的回复

thymeleaf问题

1.内联语法导致的页面报错,内联语法格式: [[...]]或[(...)] 
解决方法:如页面js有多维数组会导致thymeleaf解析错误 
解决方案:<script type="text/javascript" th:inline="none">新增红色字体内容,来禁用内联表达式 
2.js里中文变unicode编码 
问题描述:从后台传入的中文在js中通过[[...]]来取值会显示unicode编码 
解决方法::使用[(...)]来取值,但是需要手动增加引号 
说明:[[...]]等价于th:text(即结果将被HTML转义),[(...)]等价于th:utext,不会执⾏任何HTML转义。

目录
相关文章
|
7月前
|
Java 应用服务中间件 Maven
SpringBoot 项目瘦身指南
SpringBoot 项目瘦身指南
159 0
|
7月前
SpringBoot+Mybatis-Plus+PageHelper分页+多条件查询
SpringBoot+Mybatis-Plus+PageHelper分页+多条件查询
181 0
|
26天前
|
存储 运维 安全
Spring运维之boot项目多环境(yaml 多文件 proerties)及分组管理与开发控制
通过以上措施,可以保证Spring Boot项目的配置管理在专业水准上,并且易于维护和管理,符合搜索引擎收录标准。
39 2
|
2月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
66 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
2月前
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
72 2
|
6月前
|
运维 Java 关系型数据库
Spring运维之boot项目bean属性的绑定读取与校验
Spring运维之boot项目bean属性的绑定读取与校验
57 2
|
6月前
|
存储 运维 Java
Spring运维之boot项目开发关键之日志操作以及用文件记录日志
Spring运维之boot项目开发关键之日志操作以及用文件记录日志
68 2
|
6月前
|
Java Maven
springboot项目打jar包后,如何部署到服务器
springboot项目打jar包后,如何部署到服务器
443 1
|
6月前
|
XML 运维 Java
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
Spring运维之boot项目打包jar和插件运行并且设置启动时临时属性和自定义配置文件
57 1
|
6月前
springboot2.4.5使用pagehelper分页插件
springboot2.4.5使用pagehelper分页插件
165 0