SpringBoot
springboot 相关知识记录
jcsyl_mshot
点滴生活,水落石出。
展开
-
Spring Event事件通知机制
1. 背景Spring的事件通知机制是一项很有用的功能,使用事件机制我们可以将相互耦合的代码解耦,从而方便功能的修改与添加。本文我来学习并分析一下Spring中事件的原理。举个例子,假设有一个添加评论的方法,在评论添加成功之后需要进行修改redis缓存、给用户添加积分等等操作。当然可以在添加评论的代码后面假设这些操作,但是这样的代码违反了设计模式的多项原则:单一职责原则、迪米特法则、开闭原则。...原创 2020-04-30 16:25:23 · 423 阅读 · 0 评论 -
Mybatis(四)实践须知
Mybatis 不同类型sql 语句执行结果:Select:查询结果为空时,如果是基本类型返回值为默认的初始化值 ;类对象返回值为null;Map、List 等集合类对象返回值为new 空对象。Update/Delete:影响结果为空时,返回值为0;影响结果不为空时,返回值为影响条数。Mybatis xml文件中ResultMap 与 ResultType区别ResultTy...原创 2020-03-02 11:16:04 · 274 阅读 · 0 评论 -
ApplicationContextAware使用理解
问题背景在我们的web程序中,用spring来管理各个实例(bean), 有时在程序中为了使用已被实例化的bean, 通常会用到这样的代码:ApplicationContext appContext = new ClassPathXmlApplicationContext("applicationContext-common.xml"); AbcService abcService = (...原创 2020-03-01 17:04:21 · 219 阅读 · 0 评论 -
Spring IOC
基本概念1 spring是开源(免费的)的轻量级框架(没有太多依赖)2 spring核心主要两部分: (1)aop:面向切面编程,扩展功能不是修改源代码实现 (2)ioc:控制反转, - 比如有一个类,在类里面有方法(不是静态的方法),调用类里面的方法,创建类的对象,使用对象调用方法,创建类对象的过程,需要new出来对象 - 把对象的创建不是通过new方式实现,而是交给spring...原创 2018-05-20 11:18:28 · 147 阅读 · 0 评论 -
Spring AOP
AOP 概念1 aop:面向切面(方面)编程,扩展功能不修改源代码实现2 AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码 纵向抽取机制:类似于装饰模式 横向抽取机制:动态代理模式 3 aop底层使用动态代理实现 (1)第一种情况,有接口情况,使用动态代理创建接口实现类代理对象(jdk动态代理) (2)第二种情况,没有接口情况,使用动态代理创建类的子类代理对象(...原创 2018-05-20 20:25:22 · 142 阅读 · 0 评论 -
SpringBoot 学习系列四(SpringMVC中ContextLoaderListener)
Spring MVC 是建立在 IOC 容器基础上的,那么该容器是如何在 Web 环境中被载入并起作用的 ?通常我们需要配置一个监听器(ContextLoaderListener)。所谓ContextLoaderListener,就是在web部署描述符即web.xml里面经常配置的一个监听器,如下<listener> <listener-class>org....原创 2020-02-24 13:24:59 · 2004 阅读 · 0 评论 -
SpringBoot 学习系列三(SpringMVC 实现)
简单的SpringMVC 程序1.创建springmvc.xml创建SpringMVC的核心配置文件,SpringMVC本身就是Spring的子项目,对Spring兼容性很好,不需要做很多配置。这里只配置一个Controller扫描就可以了,让Spring对页面控制层Controller进行管理。&amp;amp;amp;amp;lt;?xml version=&amp;amp;amp;quot;1.0&amp;amp;amp;quot; enco原创 2018-06-02 18:53:31 · 210 阅读 · 0 评论 -
Web 开发需要知道的知识(二)
Session 与 Cookie先有鸡还是先有蛋呢?在这里其实是先有Session 的。当程序需要为某个客户端的请求创建一个回话的时候, 服务器首先检查这个客户端的请求里是否已包含了一个回话标识 -JSESSIONID, 如果已包含一个 JSESSIONID服务器就按照 JSESSIONID 判断是否以前已经为此客户端创建过回话。如果客户端请求不包含JSESSIONID, 则为此客户端创建...原创 2019-09-04 21:00:36 · 136 阅读 · 0 评论 -
Web 开发需要知道的知识(一)
Request 报文格式请求行,请求头,空行,请求正文HTTP的参数HTTP使用GET/POST等方法不影响参数存放的位置,本文首先来介绍有几种放HTTP参数的方式。1.URL里放参数在URL里放参数最简单,就是问号+键值对,它存在于HTTP的Header中第一行POST /psas/bug/image/confirm?param1=1¶m2=b HTTP/1.1...原创 2019-08-30 20:34:36 · 384 阅读 · 0 评论 -
SpringBoot 学习系列一(Servlet、Tomcat、JSP)
1.servlet的工作过程以及容器的作用Web服务器习惯处理静态页面,所以需要一个程序来帮忙处理动态请求(如当前时间)。Web服务器程序会将动态请求转发给帮助程序,帮助程序处理后,返回处理后的静态结果给web服务器程序。这样就避免了web服务器程序处理动态页面。Servlet 的本质是一个帮助程序。 什么是servlet? 早期的web应用主要用于浏览新闻等静态页面,用户通过HTTP协议...原创 2018-08-13 16:22:42 · 337 阅读 · 0 评论 -
响应结果处理器
使用 @ControllerAdvice & ResponseBodyAdvice 可以拦截Controller方法默认返回参数,统一处理返回值/响应体如:如果需要对所有ResponseDto返回类型的响应值中加入处理耗时、链路追踪reqId,可以进行如下编码@ControllerAdvicepublic class ResponseBodyHandler implements Re...原创 2019-12-15 14:19:39 · 183 阅读 · 0 评论 -
请求日志拦截器
1.背景spring记录日志有两种,一种是通过AOP,另一种是通过拦截器interceptor;SpringMVC 中的Interceptor 拦截请求是通过HandlerInterceptor 来实现的。在SpringMVC 中定义一个Interceptor 非常简单,主要有两种方式:第一种方式是要定义的Interceptor类要实现了Spring 的HandlerInterceptor ...原创 2019-12-04 16:39:13 · 352 阅读 · 0 评论 -
AOP 实现分布式锁
在web项目开发过程中,经常会遇到分布式资源控制的场景,通过加锁从而保证资源访问的互斥性。本文主要介绍在没有redis情况下通过mysql进行分布式锁的实现。场景:线程A与线程B执行前需要判断资源R的状态,当R的状态为1时,则可以执行,当R的状态为0时,则不容许执行,且同一时刻只容许一个线程执行。线程执行时资源R状态置0,线程执行结束后R状态重新置1.上述场景中,若不对资源R进行互斥访问,则...原创 2019-12-03 15:26:19 · 777 阅读 · 0 评论 -
SpringBoot 学习系列五(springboot中使用Servlet)
前言以前的java web项目,需要在web.xml中定义servlet,对应不同的请求,而在spring项目中,我们用controller定义了各种各样的servlet(当然不包括DispatcherServlet),那么controller是servlet吗?servlet的本质其实也是一个java bean,controller是对servlet的封装,底层依旧是servlet。web...原创 2019-10-28 15:23:20 · 790 阅读 · 0 评论 -
web开发需要知道的知识(四)四大对象域
Java web 四大作用域和九大对象四个作用域1.request域request是表示一个请求,只要发出一个请求就会创建一个request,它的作用域:仅在当前请求中有效。应用场景 : 常用于服务器间同一请求不同页面之间的参数传递,常应用于表单的控件值传递。2.session域服务器会为每个会话创建一个session对象,所以session中的数据可供当前会话中所有servlet...原创 2019-10-18 19:22:57 · 217 阅读 · 0 评论 -
Web 开发需要知道的知识(三)线程安全检测
1. 概述在使用Spring MVC开发Web系统时,经常需要在处理请求时使用request对象,比如获取客户端ip地址、请求的url、header中的属性(如cookie、授权信息)、body中的数据等。由于在Spring MVC中,处理请求的Controller、Service等对象都是单例的,因此获取request对象时最需要注意的问题,便是request对象是否是线程安全的:当有大量并发...原创 2019-10-18 14:25:20 · 148 阅读 · 0 评论 -
SpirngBoot 学习系列二(Spring容器和应用上下文)
容器的概念有了Spring之后,通过依赖注入的方式,我们的业务代码不用自己管理关联对象的生命周期。业务代码只需要按照业务本身的流程,走啊走啊,走到哪里,需要另外的对象来协助了,就给Spring说,我想要个对象——于是Spring就很贴心的给你个对象。Spring既然要负责应用程序中那么多对象的创建管理,就像苹果要生产那么多的手机(对象)一样,肯定有一个专门搞对象的地方。苹果生产手机的地方叫工厂...原创 2019-10-28 11:55:25 · 227 阅读 · 0 评论 -
java 注解
注解分类一、运行机制划分:源码注解编译时注解 (只在编译器时起作用)运行时注解(运行阶段起作用,影响运行逻辑,例如@Autowired)二、按照来源划分:jdk自带注解@Override@Depreted@SuppressWarning(“deprecation”)自定义注解java第三方注解Spring注解SpringBoot注解自定义注解一、 实现使用@...原创 2019-10-23 16:18:27 · 335 阅读 · 0 评论 -
请求日志AOP实现
面向切面编程往往让我们的开发更加低耦合,也大大减少了代码量,同时呢让我们更专注于业务模块的开发,把那些与业务无关的东西提取出去,便于后期的维护和迭代。接下来将以日志功能为例介绍切面的应用:1.添加依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>sp...原创 2019-10-25 18:01:12 · 180 阅读 · 0 评论 -
@SpringBootApplication的使用
之前用户使用的是3个注解注解他们的main类。分别是@Configuration,@EnableAutoConfiguration,@ComponentScan。由于这些注解一般都是一起使用,spring ...转载 2019-10-25 16:37:10 · 116 阅读 · 0 评论 -
SpringBoot 文件上传下载
最近在学习SpringBoot,以下是最近学习整理的实现文件上传下载的java代码: 1、开发环境: IDEA15+ Maven+JDK1.8 2、新建一个maven工程...转载 2019-10-25 16:24:19 · 132 阅读 · 0 评论