Spring Boot

人机对话_javaweb_聊天室_适合新手

南楼画角 提交于 2020-12-16 03:30:05
人机对话 概述 基于Springboot Theamleaf的人机对话,使用Maven进行包管理。主要功能包括:登录拦截器、人机对话。 环境配置 登录控制器 @Controller @RequestMapping ( value = "/user" ) public class LoginController { @Autowired private UserService userService ; @ResponseBody @PostMapping ( value = "/login" ) public String login ( UserInfo userInfo , HttpSession session ) { if ( ! StringUtils . isEmpty ( userInfo . getUsername ( ) ) && ! StringUtils . isEmpty ( userInfo . getPassword ( ) ) ) { UserInfo isUserExist = userService . isUserExist ( userInfo ) ; if ( null == isUserExist || null == isUserExist . getUsername ( ) ) { return JSON . toJSONString

springboot使用缓存的源码分析和demo代码上传

岁酱吖の 提交于 2020-12-15 18:08:25
demo的下载地址: https://github.com/pshdhx/springboot-redis-cache-mysql 说明:我的mysql的版本是8.xx 1、必要的准备,数据库中的两张表,很简单,根据代码中的实体类建立即可。 application.properities spring.datasource.url=jdbc:mysql://localhost:3306/cache?serverTimezone=UTC spring.datasource.username=root spring.datasource.password=pshdhx #开启驼峰写法识别 #spring.datasource.driver-class-name=com.mysql.jdbc.Driver com.mysql.cj.jdbc.Driver spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver mybatis.configuration.map-underscore-to-camel-case=true logging.level.com.pshdhx.cache.mapper=debug pom.xml:已上传github; 开始使用缓存:这里要注意的是, @Cacheable(cacheNames =

【刨根问底】在Springboot中MVC的常用注解<上>

血红的双手。 提交于 2020-12-15 18:04:51
我们再实际开发过程中一般大致为三层:controller/service/dao或者repository。其中本文最要是分享controller层相关的注解使用。常用的注解有: @RestController @RequestMapping @PathVariable @RequestParam @RequestBody @RestController 先看源码: package org.springframework.web.bind.annotation; //...无关多余的省略 @Controller @ResponseBody public @interface RestController { @AliasFor(annotation = Controller.class) String value() default ""; } 认真点看,这个注解上有两个曾经使用过的注解,一个@Controller和@ResponseBody。另外网上有人说@RestController是springboot的注解,这里得说清楚一下,并不是这样滴。 跟springboot半毛钱关系都没有。回到前面,@Controller是标记这个类为controller类,@ResponseBody是将返回数据类型转换为json格式。所以在类上面加注解

java使用POI将数据导出放入Excel

こ雲淡風輕ζ 提交于 2020-12-15 05:25:46
本文主要是将数据库取出的数据按照自定义的行列格式导出到excel中,POI则是实现我们需求所用到的技术。 POI介绍 使用spring boot导入相关依赖 获取数据(自行处理) 完整代码实例:创建excel,将数据写入excel ####1.POI介绍 要想使用POI对Excel进行操作,我们需要先了解一下Excel的两种版本:一种是97-2003版本扩展名是“.xls”;一种是2007版本扩展名是“.xlsx”。POI分别针对这两种版本需要导入的jar包不同,操作类也不同。 HSSF:操作的是.xls;XSSF:操作的是.xlsx。 不管哪种操作,基本思路都是一致,先要对应一个Excel文件,然后在对应文件中的某个sheet,接下来在操作某一行和这一行中的某一列。对应POI包:文件(webbook)、sheet(sheet)、行(row)和具体单元格(cell)。 详细操作请参照POI官网的 Excel(HSSF/XSSF)操作 ####2.通过spring boot导入依赖 为了使用java操控excel,需要将相关的jar引入,对于HSSF只需要导入POI.jar,而XSSF则需要导入四个jar,具体导入见下面代码 将代码块的依赖放入工程的pom.xml文件中就可以了。 工程不是spring boot的需要手动将下面jar导入。 <!-- HSSF需要引入的 -->

升级 Tomcat 竟然引入bug !

六月ゝ 毕业季﹏ 提交于 2020-12-14 23:37:41
来源:www.jianshu.com/p/d50bc43f505e 这篇文章是因为升级SpringBoot 后,相应的嵌入 Tomcat版本同步升级,导致服务出现400,然后一路分析思路明白原因,咱们也可以了解下,在升级Tomcat前先了解,看看官网的changeLog,了解变更点,或者出现类似问题的时候能针对的解决。因为每次版本的变更,有些校验项会越来越严格的。 为了解决分布式链路追踪的问题,我们引入了实现OpenTracing的Jaeger来实现。然后我们为SpringBoot框架写了一个starter以让用户实现近零改造接入全链路。 由于公司有一个封装了SpringBoot的内部框架,然后我们的starter就以最新框架所使用的SpringBoot版本为基础进行开发。所以业务系统在接入的时候需要先升级框架,然后再引入我们的starter才行无缝接入全链路。 故障描述 然后有一个业务系统就按照步骤,升级框架,引入starter就接入了全链路系统,并且功能测试压力测试都已经通过了。结果我们满怀信心地就上线了。结果,线上nginx报大量http 400错误。 故障排查 出现故障后,业务系统的研发人员查了所有的日志,包括elk以及机器上的日志,都没有发现明显的错误日志。这个就。。。 几番挣扎后还是没有在线上的日志中找到任何蛛丝马迹。这个就比较绝望了。更奇怪的是在测试环境中是正常的

Spring Boot 的2020最后一击:2.4.1、2.3.7、2.2.12 发布

夙愿已清 提交于 2020-12-14 12:27:23
近日,Spring Boot官方发布了本年度最后一次版本更新,主要针对目前维护的三个版本: 2.4.x:第一个bug修复版本 2.4.1 2.3.x:常规维护版本 2.3.7 2.2.x:常规维护版本 2.2.12 由于2.2.x和2.3.x已经非常稳定,所以我们主要关注本次2.4.1的更新。 2.4.1版本内容 由于在Spring Boot 2.4.0版本中,对原有的配置加载机制做了较大改动,不少开发者反映在升级的时候也出现了各种不同的问题。而这次2.4.1的发布,主要着手解决了不少关于配置相关的Bug。下面我们一起看看这次都解决了哪些重要问题: 通过通配符匹配的配置文件互相覆盖的问题 配置属性与JavaBean之间绑定的顺序问题 允许递归配置文件组的引用 外部应用程序属性加载顺序的问题 @Name在Kotlin中绑定失败的问题 Redis健康检查器对性能消耗过大的问题 Actuator端点在MVC和WebFlux下运行时,无法正确响应自定义HTTP状态码 Actuator的env端点没有正确显示包装类型的数据 通过配置树绑定非字符串属性时,找不到转换器的问题 使用Log4J调用LoggingSystem时会抛出NullPointerException的问题 加载属性文件的时候,“#”标注之后的内容会丢失 在启用 WebTestClientContextCustomizer 之前

SpringCloud 学习总结(二)

谁都会走 提交于 2020-12-14 11:29:13
SpringCloud 学习总结(一) SpringCloud 学习总结(二) 服务容错保护Hystrix Hystix是Netflix开源的一个延迟和容错库,其中提供了基础的熔断功能,用于隔离访问远程服务、第三方库,防止出现级联失败。关于Hystrix更详细的原理,可以参考官方文档: https://github.com/Netflix/Hystrix/ 雪崩问题: 在微服务框架中,系统间都通过微服务进行调用,在微服务之间会存在这相互依赖关系。假设每个微服务运行在不同的进程中,依赖的调用只则需要使用远程调用方式。如果其中一个网络出现问题,或者延迟,此时,调用方式在不断的调用,后方的依赖会出现故障。当响应过多时,就可能出现雪崩效应,造成系统的崩溃。 下图中,我们可以看到微服务中,服务间复杂的调用关系,一个请求,可能需要调用多个微服务接口才能实现,会形成非常复杂的调用链路: 如图,一次业务请求,需要调用A、P、H、I四个服务,这四个服务又可能调用其它服务。如果此时,某个服务出现异常: 例如:微服务I发生异常,请求阻塞,用户不会得到响应,则tomcat的这个线程不会释放,于是越来越多的用户请求到来,越来越多的线程会阻塞: 服务器支持的线程和并发数有限,请求一直阻塞,会导致服务器资源耗尽,从而导致所有其它服务都不可用,形成雪崩效应。 Hystix解决雪崩问题: 线程隔离(服务降级)

Springboot 定时任务,service层无法注入问题详细解决

房东的猫 提交于 2020-12-14 11:01:25
开发一个微信小程序后台,建立websocket 长连接,需要后台开启定时任务, 定时任务定时查库,相应前台 但是具体执行过程中一直在报空指针错误,最后定位到service 为空,无法调用其相关的方法导致的 于是我尝试不用@Autowired 注入实例,自己new ,但是还是失败了,报空指针 这是spring的一个Bug ,需要手动去配置一个类,主动获取实例,在定时任务中(继承TimerTask类),@Autowired 是失效的,无法注入 解决方案如下: 1.首先添加一个工具类,就是application 应注意,同样需要注入添加 @Compent注解 package com.cskaoyan.carparking.utils; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Component; /** * [@Auther]

Spring Boot/Spring Cloud

て烟熏妆下的殇ゞ 提交于 2020-12-14 07:36:41
104.什么是 spring boot? 在Spring框架这个大家族中,产生了很多衍生框架,比如 Spring、SpringMvc框架等,Spring的核心内容在于控制反转(IOC)和依赖注入(DI),所谓控制反转并非是一种技术,而是一种思想,在操作方面是指在spring配置文件中创建<bean>,依赖注入即为由spring容器为应用程序的某个对象提供资源,比如 引用对象、常量数据等。 SpringBoot是一个框架,一种全新的编程规范,他的产生简化了框架的使用,所谓简化是指简化了Spring众多框架中所需的大量且繁琐的配置文件,所以 SpringBoot是一个服务于框架的框架,服务范围是简化配置文件。 105.为什么要用 spring boot? 让文件配置变的相当简单、让应用部署变的简单(SpringBoot内置服务器,并装备启动类代码),可以快速开启一个Web容器进行开发。 (1)一个简单的SpringBoot工程是不需要在pom.xml手动添加什么配置的,如果与其他技术合用 比如postMan(文档在线自动生成、开发功能测试的一套工具)、Swagger(文档在线自动生成、开发功能测试的一套工具),则需要在pom.xml中添加依赖,由程序自动加载依赖jar包等配置文件。 (2)我们之前在利用SSM或者SSH开发的时候,在resources中储存各种对应框架的配置文件