SpringBoot
文章平均质量分 63
SpringBoot学习
yui方木
梦中的艾恩葛朗特
展开
-
Hibernate使用
用Hibernate连接SQLServer导包: <!-- Hibernate --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>${hibernate.version}&l原创 2021-10-15 11:02:07 · 186 阅读 · 0 评论 -
SpringBoot获取访问自己页面的ip、城市信息、请求来源设备、是否为内网ip
获取访问自己界面的ipprivate static final String LOCAL_IP = "127.0.0.1";public static String getIpAddr(HttpServletRequest request) { if (request == null) { return "unknown"; } String ip = request.getHeader("x-forwarded-for");原创 2021-09-07 17:15:35 · 2772 阅读 · 3 评论 -
解决SpirngBoot使用@Scheduled开启多个定时任务偶发任务不执行问题
在项目中需要配置定时任务采集hdfs-jmx数据进行读写数据库操作,还需要配置一些定时任务做告警操作,使用了@Scheduled注解。在配置了7个按照运行结束时间每5s一次的定时任务时,发现了一个问题,就是有的定时任务没有按时执行,但是却又不是每一次都不执行,也不是每一次都是同一个线程不执行,很奇怪,去看了一下是怎么回事项目中配置的部分定时任务代码如下: @Scheduled(fixedDelay = 5000) public void updateTotalDifference() t原创 2021-09-06 11:33:38 · 1382 阅读 · 0 评论 -
@Transactional开启事务以及@Transactional属性配置
@Transactional事务有如下可添加参数:参数名参数值参数作用noRollbackForClass<? extends Throwable>[]一组异常类,遇到时不回滚。默认为{}isolation枚举org.springframework.transaction.annotation.Isolation的值事务隔离级别noRollbackForClassNameStirng[]一组异常类名,遇到时不回滚,默认为{}propagati原创 2021-08-25 14:18:58 · 4829 阅读 · 0 评论 -
解决锁等待超时问题(Lock wait timeout exceeded; try restarting transaction)
项目中用了@Scheduled(fixedDelay = 10000)注解每10s循环更细数据库,每次更新差不多两万条数据吧。多个方法分别操作数一个表中不同clusterName字段标识的行,开启事务@Transactional(rollbackFor = Exception.class)后,开启线程池@Async("asyncPostFix")做异步更新数据表操作。今天看了日志发现出现了这个锁等待超时的错误。开启线程池:@Configurationpublic class AsyncConfig {原创 2021-08-25 13:48:33 · 10382 阅读 · 0 评论 -
后端接口以Json格式传参
主要用到两个注解:@PostMapping(value={"/xxx"},produces = MediaType.APPLICATION_JSON_VALUE)produces=MediaType.APPLICATION_JSON_VALUE:表示将生产json格式的数据,此时根据请求头中的Accept进行匹配,如请求头“Accept:application/json”时即可匹配value={"/xxx"}:表示接口的地址@ResponseBody然后是接口方法体:public Strin原创 2021-07-23 16:44:40 · 8078 阅读 · 1 评论 -
Swagger配置:扫描接口、开启Swagger、API文档分组、实体类API文档注释
配置要扫描哪些接口:开启swagger服务如果enable为false,则不能访问swagger-ui.html界面:设置只有特定环境下开启swagger设置只有生产环境才开启swagger服务,其他环境不开启:创建一个参数Environment环境监听器然后将flag这个boolean类型参数传递给enable:选择dev生产环境:进入swagger-ui界面:切换为test测试环境:进入swagger-ui界面:进入失败配置API文档的分组每组扫描自己的包,多组协原创 2021-02-26 15:09:21 · 1473 阅读 · 2 评论 -
SpringBoot开启Swagger并配置基本信息
前后端分离:前后端交互:API:前后端集成联调,前后端人员无法及时协商解决方案:首先制定schema[计划的提纲],实时更新最新API,降低集成风险SwaggerSwagger世界上最流行的API框架Restful API 文档在线自动生成工具–>API文档与API定义同步更新可以在线直接运行,直接测试支持多种语言:Java、PHP…在项目中使用swagger:springfox;swagger2uiSpringboot集成Swagger:导包:<!--原创 2021-02-26 13:58:36 · 2539 阅读 · 0 评论 -
SpringBoot整合安全性框架SpringSecurity
SpringSecurity是一种基于Spring应用提供的声明式的安全保护性的框架,它可以在web请求级别的和方法调用级别处理身份和授权。首先需要在Maven中导包: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId&g原创 2021-02-25 22:44:27 · 805 阅读 · 0 评论 -
SpringBoot使用Druid数据源整合Mybatis
使用Mybatis框架控制SpringBoot项目的持久化层:首先第一步是导包: <!--Mybatis--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <vers原创 2021-02-24 00:29:26 · 521 阅读 · 0 评论 -
@Autowired:Could not autowire.No beans of ‘xxx‘ type found问题解决方法
在使用@Autowired自动装配bean的时候 出现了如下错误。Could not autowire.No beans of 'xxx' type found.这个错误是Springboot没有扫描到对应的组件从而无法自动装配产生的。解决方法一:在要自动装配的类前加@Component、@Controller、@Repository()等注解,使其成为SpringBoot组件解决方法二:手动添加需要扫描的包,在Application启动类前加注解:@ComponentScan(basePac原创 2021-02-21 22:54:36 · 3412 阅读 · 0 评论 -
SpringBoot--页面国际化
首先要新建一个i18n的包来存放国际化配置:分别配置各种语言:然后要在application.yaml配置文件中添加配置参数,让国际化配置生效:spring: thymeleaf: cache: false messages: basename: i18n.login我们知道Thymeleaf的@、#、¥、*的作用:${...}变量引用模式,*{...}选择表达式,一般是th:object之后,直接取Object中的属性。当没有选取对象时,其功能等同于${..原创 2021-02-20 15:47:09 · 237 阅读 · 0 评论 -
Whitelabel Error Page 500错误解决方法
运行springboot出现这个错误。这个错误的原因已经给出来是:此应用程序没有明确的映射/错误。我认为一般的话这个错误是出现在视图层的,跟java代码关系应该不大。经过排查我发现我的错误是<link th:href="@{/asserts/css/bootstrap.min.css}" rel="stylesheet">忘记加@{}框柱超链接url,,,很不起眼的一个错误,说明一定要细心,,,下面是我排错的时候排查的错误点,留下一些记录:application位置不对,必须在组.原创 2021-02-19 22:10:06 · 2367 阅读 · 0 评论 -
扩展配置SpringMVC(自定义的MVC配置类为什么不能添加@EnableWebMvc注解)
扩展配置SpringMVC方法:要扩展MVC组件配置,我们要做的就是编写一个@Configuration注解类,并且要实现WebMvcConfiguration接口,而且不能标注@EnableWebMvc,并且一般我们把这个类放在config包下。然后就可以重写配置方法了。那么为什么这个类不能添加@EnableWebMvc注解呢:点开WebMvcAutoConfiguration类:我们可以看到一个注解:@ConditionalOnMissingBean(WebMvcConfigurationSu原创 2021-02-18 22:19:40 · 775 阅读 · 0 评论 -
SpringBoot--MVC组件扩展原理
扩展SpringMVC配置,只需要创建一个类实现WebMvcConfigurer这个接口即可。同时将这个类标注为@Configuration,但是不能有@EnableWebMvc,因为一旦标注了@EnableWebMvc,MVC将会被全面接管。只要实现了ViewResolver接口的类,我们就可以称其为视图解析器。在SpringMVC中配置一个自定义的视图解析器,只需要创建一个类实现ViewResolver接口,然后创建这个自定义类的对象bean并放入Spring,Spring就会自动装配package原创 2021-02-18 21:33:36 · 211 阅读 · 0 评论 -
模板引擎Thymeleaf
导入Thymeleaf。<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>Thymeleaf就是一个模板引擎用来渲染页面,与JSP类似,其实JSP也是一个模板引擎,只不过技术较老。Thymeleaf模板引擎都写在Templates目原创 2021-02-09 00:38:19 · 235 阅读 · 0 评论 -
SpringBoot之web开发--定制首页及存放位置
查看这个类的源码:可以看到识别首页的方法:@Beanpublic WelcomePageHandlerMapping welcomePageHandlerMapping(ApplicationContext applicationContext, FormattingConversionService mvcConversionService, ResourceUrlProvider mvcResourceUrlProvider) {WelcomePageHandlerMapping welco原创 2021-02-08 23:54:55 · 604 阅读 · 0 评论 -
SpringBoot之web开发--静态资源存放
1.静态资源导入:可以看到resources文件夹下有两个文件夹static、templates显而易见静态资源放在static文件夹中,templates文件夹存放模板进入类查看添加静态资源的源码:查看WebMvcAutoConfigurationAdapter类下的addResourcesHandlers方法:protected void addResourceHandlers(ResourceHandlerRegistry registry) {super.addResourceHand原创 2021-02-08 23:52:19 · 850 阅读 · 0 评论 -
yaml配置文件联系spring.factories(自动配置原理)
之前我们看SpringBoot源码知道了:SpringBoot自动装配的配置都在spring.factories这个文件里,所以我们要知道yaml配置文件可以配置哪些东西,就要去spring.factories这个文件里找,看看这里面配置了些什么:在库中找到spring.factories:这是spring.factories其中的一些配置,我们点开一个源码:@Configuration():可以看到这个类的注解:无论点开哪一个类,都可以看到这个注解@Configuration():表明这原创 2021-02-06 00:07:13 · 571 阅读 · 0 评论 -
SpringBooot多环境配置
springboot的多环境配置,可以选择激活哪一个环境例如创建三个环境—一个默认application.yaml,一个测试环境application-test.yaml,一个开发环境application-dev.yaml要选择在哪个环境下运行程序,只要在application下配置要选择的环境即可,默认环境无需配置。spring.profiles.active: testyaml中还提供了多文档模块选择环境的方法:在application.yaml中分割多个环境模块使用—分割各个环境模块:原创 2021-02-05 23:08:34 · 204 阅读 · 0 评论 -
JSR303数据校验
松散绑定yaml配置文件给实体类对象赋值是松散绑定的,也就是说:在yaml中的first-name可以赋值给实体类对象的firstName。-连接符可以赋值给对应的驼峰命名属性。下面一个例子:dog: first-name: 大黄 age: 2package com.example.hellospringboot.pojo;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstr原创 2021-02-03 23:44:40 · 344 阅读 · 1 评论 -
yaml配置文件语法以及实体类赋值(松散绑定)
SpringBoot使用一个全局配置文件,配置文件名固定:application.properties语法结构:key=valueapplication.yaml(推荐)语法结构:key:(空格) value配置文件的作用:修改SpringBoot自动配置的默认值,因为SpringBoot在底层配置好了yaml:既是一种标记语言,又不是一种标记语言,可以理解为一种格式: 可读性高,用来表达数据序列化的格式yaml基本语法:(对缩进的要求非常严格)#普通的key-value原创 2021-02-03 23:08:27 · 1907 阅读 · 0 评论 -
SpringBoot源码分析--自动装配原理
pom.xml中 在父工程中存放着核心依赖:spring-boot-starter-parent我们在写或者引入一些springboot依赖的时候,不需要指定版本,因为有这个版本仓库springboot是由很多模块组成的,启动器模块、测试模块等。启动器:<!--启动器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-s.原创 2021-02-01 23:39:31 · 253 阅读 · 0 评论 -
IDEA快速搭建一个Springboot程序
jdk 1.8maven 3.6.3Springboot 2.4.2IDEA首先打开IDEA创建项目窗口选择Spring Initializr 创建项目启动URL默认的https://start.spring.io可能出现一直卡在这个界面连接不成功的问题 那么使用自定义的http://start.spring.io即可然后来到这个界面,自己设置包名和工件名其他选择都默认即可然后选择需要的依赖,比较初始的项目选择以下Lomak、Spring Web、Thymeleaf、mysql.原创 2021-01-31 23:36:32 · 187 阅读 · 0 评论