
SpringBoot
文章平均质量分 83
SpringBoot
好汉不吃草
Accept your ordinary and try your best to be different.
展开
-
SpringBoot自动配置分析
SpringBoot程序中的启动类,需要编写在项目根包中,而编写在子包中的类就可以实现自动装配处理。这种功能是如何实现的?Spring容器又是怎样启动的?还是需从启动类开始分析。原创 2021-12-11 11:49:30 · 622 阅读 · 1 评论 -
详解SpringBoot自动装配原理
文章目录一、从RedisAutoConfiguration源码分析自动装配二、@EnableConfigurationProperties注解三、@Import注解3.1 类导入3.2 ImportSelector导入3.3 ImportBeanDefinitionRegistrar导入四、application.yml配置提示五、自定义Starter组件一、从RedisAutoConfiguration源码分析自动装配SpringBoot主张一种零配置的开发方式,特别是第三方框架的整合往往只需要在项.原创 2021-12-07 17:59:45 · 2429 阅读 · 3 评论 -
聊一聊SpringBoot中的异步编程
从WEB服务器的响应模式来看,Web服务器为用户的每一次请求都分配了一个处理线程,可以称之为用户线程,也就是说本次请求的所有内容都交由这个线程来处理。如果用户单次请求提交的并行任务较多且业务复杂,单一线程的处理速度就会变慢。为了提升服务器的响应速度,可以采取异步的模式,在用户线程中新开一个或多个任务线程,让程序并行的处理用户请求,最后将处理结果交由用户线程整合后返回。一、启用异步线程1.1 Callable接口实现异步处理Callable接口可以开启新线程执行,并将执行的结果返回主线程,那么可以原创 2021-12-04 15:38:09 · 1355 阅读 · 1 评论 -
SpringBoot整合WebSocket
一、WebSocket与Http的区别HTTP是应用层上的一个单向的、无状态的、基于请求与响应的协议。http协议本身是没有持久通信能力的,当客户端向服务器发送HTTP请求时,接收到请求后,服务器会将响应发送给客户端。每个请求都与一个对应的响应相关联,在发送响应后客户端与服务器的连接会被关闭。这种的基于请求响应的通讯方式有一点不足,服务器端无法主动向客户端推送数据。Websocket是应用层上的一个全双工的有状态协议。websocket以ws://或wss://开头,它必须依赖 HTTP 协议进行一次原创 2021-12-01 20:18:28 · 5351 阅读 · 10 评论 -
SpringBoot整合WebService
WebService是一种传统的SOA技术架构,它不依赖于任何的编程语言,也不依赖于任何的技术平台,可以直接基于HTTP协议实现网络应用间的数据交互。面向服务架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。WebService主要用于异构平台之间的整合与调用,例如请求者原创 2021-11-28 17:03:09 · 6170 阅读 · 3 评论 -
SpringBoot使用ShedLock调度任务
前言在分布式的场景下,SpringBoot程序以集群的方式部署,这些程序中运行着相同的代码,如果其中有定时任务的话,所有的程序都会运行该任务,这样就会导致任务的重复执行。由于所有的定时任务在集群的不同节点值中,所以需要一个专属的数据存储空间(通常使用Nosql数据库)来记录每一个定时任务的名称以及当前执行任务的主机与任务执行时间,而后在集群中不同的节点执行任务前会查看数据存储中是否存在指定任务的执行记录,如果没有记录则可以启动该节点任务,如果已经有此任务的相关信息,则代表任务已经执行,则跳过该节点任务原创 2021-11-27 11:58:35 · 992 阅读 · 1 评论 -
SpringBoot定时任务
SpringBoot中使用SpringTask处理定时任务,这是一种相较于传统的quartZ组件更加简单的形式,在方法上使用@Scheduled注解可以设置定时任务,任务分为3种类型。No.类型解释1fixedDelay每次任务执行完之后的xx时间后继续执行,单位为ms2fixedRate固定时间循环执行,单位为ms3cron当时间达到设置的时间会触发任务其中cron任务需要编写cron表达式,也可以选择在网站快速生成(快速生成cron表达式)。新建一原创 2021-11-27 08:48:18 · 707 阅读 · 0 评论 -
Prometheus搭建SpringBoot监控环境
SpringBoot程序通过Actuator接口访问,每次只能拿到当前状态的数据,如果想要统计分析监控数据,那么应该拿到每一个时刻的监控数据,存储到数据库中,并进行可视化展示。在微服务场景下,针对于SpringBoot程序的监控,Spring全家桶提供有SpringBootAdmin组件。如果不考虑微服务的情况,可以使用NodeExporter监控SpringBoot程序所运行的主机信息(Cpu、内存等),使用Actuator监控SpringBoot程序的运行信息。使用Prometheus采集监控数据存储原创 2021-11-23 22:12:08 · 1556 阅读 · 1 评论 -
SpringBoot四大神器之Actuator
使用Actuator可以在SpringBoot程序运行时通过http请求的方式动态的监控和管理程序,官方对其功能的介绍如下:Spring Boot includes a number of additional features to help you monitor and manage your application when you push it to production. You can choose to manage and monitor your application by us原创 2021-11-23 22:09:50 · 14141 阅读 · 4 评论 -
Thymeleaf模板引擎
在经典的java单体项目中(前后端不分离),页面的编写往往采用JSP技术(Java Server Page),JSP的最大特点是可以在页面中编写java代码,实际上jsp经过转化生成Servlet,再编译生成*.class文件存储在WEB容器中,而对用户请求的处理正是由Servlet完成的。使用JSP开发的主要问题是页面过于混乱,在HTML中编写JAVA代码往往只能由后台工程师完成,极大的提升了开发的难度,而页面的调试也需要先转换为Servlet再打包才能看到执行结果。SpringBoot项目默认使用内原创 2021-11-19 11:26:44 · 1156 阅读 · 1 评论 -
SpringBoot使用JSR303进行数据验证
SpringBoot支持JSR303的验证规范。JSR303 规范(Bean Validation 规范)为 JavaBean 验证定义了相应的元数据模型和 API。在应用程序中,通过使用 Bean Validation 或是你自己定义的 constraint,例如 @NotNull, @Max, @ZipCode , 就可以确保数据模型(JavaBean)的正确性。constraint 可以附加到字段,getter 方法,类或者接口上面。对于一些特定的需求,用户可以很容易的开发定制化的 constra原创 2021-11-14 11:20:00 · 2039 阅读 · 0 评论 -
SpringBoot全局处理
一、全局错误页SpringBoot默认已经存在了错误页的显示处理,例如访问一个不存在的路径:如果考虑到前后端分离的设计,那么应该使用JSON进行数据交互,返回页面的形式就不能满足要求。新建返回数据包装类,规定任何交互数据都以此为规范:public class ResultMessage<T> { private Integer code; // 返回编码 private String message; // 信息 private T result; // 返回结果原创 2021-11-14 11:18:49 · 1204 阅读 · 0 评论 -
SpringBoot配置Https访问
Https协议HTTP(Hypertext transfer protocal)是一种详细规定了浏览器和万维网服务器之间相互通信的规则,通过因特网传送万维网文档的数据传送协议。HTTPS(Hypertext transfer protocal over Secure Socket Layer)是以安全为目标的http通道,https的安全基础是ssl,因此加密的详细内容就需要ssl。https协议需要到ca申请证书(一般免费的证书很少)。http是超文本传输协议,信息是明文传输的,https则是具有原创 2021-11-10 21:58:42 · 17748 阅读 · 2 评论 -
SpringBoot整合Web过滤器、监听器、拦截器
整合过滤器SpringBoot定义一个web过滤器只需要其继承HttpFilter类,并在类上使用@WebFilter注解声明过滤路径。@Slf4j@WebFilter("/*") // 过滤器路径public class MessageFilter extends HttpFilter { public void doFilter(HttpServletRequest request, HttpServletResponse response,原创 2021-11-08 21:27:27 · 1647 阅读 · 0 评论 -
SpringBoot文件上传
服务器处理上传文件一般都是先在请求中读取文件信息,然后改变名称保存在服务器的临时路径下,最后保存到服务器磁盘中。本次以thymeleaf搭建demo,因此需要引入thymeleaf依赖库。<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> <ver原创 2021-11-07 11:59:31 · 415 阅读 · 0 评论 -
SpringBoot读取资源文件
在Java项目中,资源文件一般都为 *.properties 文件(只能存储key-value格式的数据),SpringMVC中提供有MessageSource接口进行资源文件的读取,在SpringBoot中也支持同样的操作。读取资源文件在resources目录下新建i18n文件夹,在文件夹中新建message.properties文件:title=SpringBoot开发框架desc=官方网址: https://spring.io/projects/spring-boot修改applicati原创 2021-10-31 19:22:59 · 2256 阅读 · 0 评论 -
SpringBoot获取Web内置对象
Web内置对象主要有request、response、session、servletContext,而实际上session、servletContext都可以通过request对象来进行获取。一、通过注入方法参数获取内置对象@RestController@RequestMapping("/innerObject")public class InnerObjectAction { @RequestMapping("/get") public Map<String, Object原创 2021-10-31 13:22:53 · 334 阅读 · 0 评论 -
SpringBoot属性注入
一、@Value注解注入属性SpringBoot默认可以将application.properties文件或application.yml文件中定义的属性值注入到java类中,这种注入实际上是通过java类属性的setter方法进行的。例:将application.yml中的以下属性注入到类中:## 自定义属性petshop: name: 睿芽宠物 introduce: 种类齐全,安全可靠 licences: 1、上市许可证,2、疫苗许可证 infos: "{'phone':'36x原创 2021-10-27 17:44:46 · 2189 阅读 · 4 评论 -
SpringBoot返回多种格式的数据
一、SpringBoot整合FastJson1、引入FastJson依赖包maven项目:<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.78</version></dependency>gradle项目:compile 'com.alibab原创 2021-10-27 14:56:12 · 2157 阅读 · 0 评论