SpringBoot
文章平均质量分 87
springboot总结
chy1984
这个作者很懒,什么都没留下…
展开
-
SpringBoot yaml配置文件
在创建springboot项目时,可以勾选 Developer Tools -> Spring Configuration Processor,或手动添加依赖原创 2023-03-07 15:52:12 · 1444 阅读 · 1 评论 -
SpringBoot 缓存
查询频率高、更新频率低的数据可以加缓存,缓存可分为本地缓存、分布式缓存2大类。l本地缓存比分布式缓存速度快、效率高;占用应用服务器内存,缓存的数据量通常不能太大;适合单机应用中使用,分布式环境下容易出现数据不一致问题,如果要在分布式环境中使用本地、远程二级缓存,本地缓存的有效期应该设置很短,建议5s以内,减少本地缓存脏数据问题;常见的比如guava、ehcache、caffeine;本地缓存常见实现自己用 ConcurrentLinkedHashMap 实现;原创 2020-12-13 16:17:44 · 5129 阅读 · 1 评论 -
SpringBoot 优雅停机
目录linux常用的 kill 指令springboot 优雅停机/actuator/shutdown 端点不停机更新方案 linux常用的 kill 指令kill -15:kill指令默认就是-15,只是发送一个 SIGTERM 信号通知进程终止,由进程自行决定怎么做,即进程不一定会终止。kill -9:强制终止进程,进程会被立刻终止kill -2:类似 Ctrl+C 退出,会先保存相关数据再终止进程。一般不直接使用 kill -15,因为不一定能终止进程。kill -9 过于原创 2021-10-20 16:50:27 · 4358 阅读 · 1 评论 -
SpringBoot 自动配置原理
目录@SpringBootApplication注解@EnableAutoConfiguration自动配置的实现原理 @SpringBootApplication注解包含了以下3个注解SpringBootConfiguration:标识为springboot的主配置类|引导类,本身具有@Configuration注解的作用@EnableAutoConfiguration:开启自动配置,可通过exclude属性排除不需要应用自动配置的类@ComponentScan:自动扫描并加载符合原创 2021-10-19 22:48:47 · 658 阅读 · 0 评论 -
SpringBoot @Conditional系列注解
springboot 提供的 @Conditional 系列注解:校验是否满足指定条件,满足指定条件时 标注的@Component体系、@Bean注解才会创建对应的bean实例放到容器中。我们在用@Bean、@Component之类的注解配置bean时,可以加上@ConditionalOnMissingBean(Xxx.class) ,以避免重复创建bean。指定的bean已经存在于容器中,且只有单个实例(单个候选者)时,才会作为bean放到容器中。要是指定的web应用类型,才会作为bean放到容器中。原创 2021-10-20 12:33:58 · 2453 阅读 · 0 评论 -
SpringBoot 静态资源处理
目录主要提供的bean静态资源的路径映射静态资源的位置静态资源的访问路径webjars的使用首页映射 springboot给webmvc提供的自动配置类是 WebMvcAutoConfiguration,这篇博文中涉及到的源码都是这个类中的。 主要提供的bean使用 @Bean 提供了一些webmvc常用的beanViewResolver 视图解析器RequestContextFilter 过滤器RequestMappingHandlerAdapter 处理器适配器原创 2021-10-12 23:46:55 · 482 阅读 · 0 评论 -
SpringBoot 配置文件源码
bootstrap是在springloud中使用的,加载时机在application之前,应用启动时,会先加载解析bootstrap.yml,创建引导上下文,由引导上下文加载、解析application.yml,创建应用上下文。eg. 在IDEA中调试时,springboot能读取到项目根目录下的配置文件,但maven package时默认不会打包根目录下的配置文件,需要在pom.xml中修改maven的打包配置。指定额外的配置文件位置,这样修改外部配置文件的内容后,无需重新打jar包。原创 2021-10-12 19:38:15 · 2740 阅读 · 0 评论 -
SpringBoot 基础理论
目录springboot的优点springboot的特性spring、springmvc、springboot、springcloud的联系与区别springboot 1.x和2.x的区别starter部署方式应用监控环境区分定时任务 springboot的优点相关问题springboot有哪些优点?你们项目为什么要使用springboot?springboot有什么特点? springboot的优点提供起步依赖,无需处理复杂依赖的关系提供大量的自动配置,无需编原创 2021-10-02 19:10:13 · 705 阅读 · 0 评论 -
SpringBoot ApplicationContext常用工具类,应用上下文引用的保存
目录ApplicationContext工具类 | bean的获取保存应用上下文引用在引导类中保存run()方法返回的应用上下文使用应用上下文初始化器 ApplicationContextInitializer使用应用监听器 ApplicationListener使用应用上下文的Aware接口 ApplicationContextAware ApplicationContext、ApplicationContextInitializer、ApplicationListener、Applicat原创 2021-10-14 22:23:16 · 1020 阅读 · 0 评论 -
SpringBoot 启动流程
目录SpringApplication的启动思路SpringApplication的构造方法整体流程设置基础资源 primarySources推断应用类型 WebApplicationType设置应用上下文初始化器、应用监听器推断主类 deduceMainApplicationClass()SpringApplication的实例run()方法整体流程运行监听器 SpringApplicationRunListener准备环境 prepareEnvironment()打印Banner printBanner原创 2021-10-13 16:45:03 · 1362 阅读 · 0 评论 -
SpringBoot Banner,SpringApplicationRunListener,ApplicationContextInitializer,Runner,StopWatch
目录自定义 Banner文本banner图片banner自定义运行监听器 SpringApplicationRunListener自定义应用上下文初始化器 ApplicationContextInitializerRunner的使用StopWatch( 计时器)的使用 Banner、SpringApplicationRunListener、Runner是springboot提供的,ApplicationContextInitializer、StopWatch是spring提供的,此处以spri原创 2021-10-13 22:26:29 · 536 阅读 · 0 评论 -
解决请求跨域问题
目录跨域常见的几种情况跨域常用的解决方案前端vue解决axios的跨域问题后端springboot解决跨域问题 跨域常见的几种情况域名不同,eg. www.baidu.com、www.mall.baidu.com使用的端口不同,eg. 80、8080使用的协议不同,eg. http、https 跨域常用的解决方案跨域的解决方案很多,可以在前端解决,也可以在后端解决。 前端vue解决axios的跨域问题1、main.js//axios请求的默认前缀a原创 2020-08-31 19:28:58 · 1314 阅读 · 0 评论 -
SpringBoot 定时任务Schedule,异步任务Async
springboot的定时任务、异步任务都是使用单独的线程池,如果公司有线程池使用规范或觉得内置的线程池不满足需求,可以使用自定义的线程池。spring自带了定时任务、异步任务,springboot中自然也包含了进来,此处主要介绍在springboot中的使用。一个线程执行一个定时任务,如果线程数不够,会出现部分定时任务没有可用线程来执行的情况。定时任务、异步任务是spring|spring自带的,不需要额外添加依赖。通常会把定时|异步任务抽出来,统一放在单独的包、类中,方便维护。一共7个字段,依次是。原创 2021-09-20 07:02:17 · 1923 阅读 · 0 评论 -
SpringBoot 日志设置
日志的作用便于分析程序执行过程方便调试可以将业务数据存储到文件、数据库、es,便于统计分析常见的日志组件日志门面|接口层:提供日志接口 | api,常见的 slf4j、apache的commons-logging日志实现:提供具体实现,常见的 log4j、log4j2、logback、jdk自带的jul日志组件对性能有一定影响,尤其是需要大量使用日志的项目,应该注意日志组件的选择。日志之所以采用门面模式,是为了在项目中使用统一的日志api,方便以后切换。原创 2020-11-25 23:03:22 · 1207 阅读 · 0 评论 -
SpringBoot整合Validation进行参数校验
可以用正则表达式进行校验,示例@Pattern(regexp = "^[1][3-9][0-9]{9}$", message = "手机号为空或格式错误")原创 2020-11-22 15:21:30 · 3855 阅读 · 4 评论 -
使用外置tomcat部署springboot项目
目录springboot项目配置tomcat配置配置端口修改tomcat的默认部署目录(可选) springboot的web项目默认内置了tomcat,可以打包为jar,java -jar以内置tomcat运行;也可以打包为war,用外置tomcat运行。jar包含了所需的全部依赖、配置,文件体积较大,可直接运行,正式服很少变动,常用jar;测试服调试时,经常只替换少数文件,常打成war包,使用外置tomcat运行,以减小替换时上传到测试服的文件体积。 springboot项目原创 2020-11-25 21:53:32 · 2614 阅读 · 0 评论 -
Spring Session的使用
spring session可以将session存储到redis、关系数据库等介质中,从而实现分布式session,且可以提供restful风格的sessionId。session常用的存储介质是redis。 springboot整合spring session依赖Web -> 勾选Spring Session,NoSQL -> Spring Data Redis(Access+Driver),也可以手动添加依赖<dependency> &原创 2020-09-28 21:51:48 · 688 阅读 · 0 评论 -
SpringBoot整合过滤器、拦截器
HttpServerRequest只能使用一次获取输入流的方法,getInputStream()、getReader()这2个方法都不会重置游标,下次再调用时游标在末尾,读取不到数据,HttpServerResponse同理。如果要多次读取request中的数据,可以包装一下request,存储输入流,以便后续读取。过滤器能实现的功能拦截器基本都能实现,且拦截器不依赖于web容器,尽量用拦截器代替过滤器。以上是配置类方式,也可以使用注解进行配置。一个filter对应一个bean。3、多个拦截器的执顺序。原创 2020-08-31 18:54:16 · 1571 阅读 · 0 评论 -
SpringBoot 发送邮件
目录介绍邮件分类获取授权码发送邮件依赖application.properties接口实现类单元测试注意点 介绍邮件分类文本邮件 不解析内容中的html标签html邮件 会解析内容中的html标签,就是说可以包含图片、视频等内容附件邮件 文本邮件、html邮件都可带附件 获取授权码以qq邮箱为例:设置 -> 账户 -> POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务 -> IMAP/SMTP服务 -&原创 2020-05-25 19:17:19 · 992 阅读 · 0 评论 -
SpringBoot 文件的上传、下载
目录文件上传文件下载说明 文件上传spring-boot-starter-web中已经包含了springmvc的依赖,其中包括上传文件所需的依赖,不需要额外添加依赖。 application.properties#所允许的文件最大尺寸,默认10MBspring.servlet.multipart.max-file-size=1024MB#所允许的请求最大尺寸,默认10MBspring.servlet.multipart.max-request-size=1024MB#原创 2020-05-25 14:58:00 · 1547 阅读 · 0 评论 -
SpringBoot整合AOP
如果是通过目标类的其它方法去调用目标方法(目标类内部调用目标方法),则代理(aop)不生效,此种情况需要通过 AopContext 获取代理(目标类实例),通过代理来调用目标方法。1、因为要在切面类中调用(目标类的)目标方法,所以目标方法要用 public 修饰才能被代理、调用,aop才会生效。使用最多的是aspectj,平时所说的sping aop也往往是指这种方式,此处介绍的也是aspectj的使用。2、要直接通过目标类来调用目标方法,代理(aop)才会生效,eg.原创 2020-05-25 09:41:07 · 1579 阅读 · 0 评论 -
SpringBoot 整合模板引擎、普通HTML
经常需要自动移除元素,比如controller从数据库查询商品,把商品信息传递给html展示出来,有时候没有满足条件的商品,传递的是null,这时候光秃秃地显示一个表头是不合适的,数据为空时应该自动移除表格|表头,给出提示。注意普通html的 prefix 不是以 classpath: 开头的,模板引擎和 jsp 都可以使用 ${ }之类的表达式语言直接取controller传递的数据,都是由后端进行渲染,普通html则是由浏览器渲染。如果引用的是本页面中的片段,可以缺省页面,直接写成 ::片段;原创 2020-05-24 23:05:09 · 1760 阅读 · 0 评论 -
SpringBoot整合MyBatis,HiKari、Druid连接池的使用,多数据源配置
HiKariCP,CP即Connection Pool,代码经过精简优化,jar包体积很小,稳定可靠、性能极高,号称性能最高的连接池,是springboot 2.x默认的数据库连接池。hikari的高性能得益于最大限度地避免锁竞争。druid是阿里开源的连接池,性能略低于hikari,但功能全面、扩展性强,对数据库操作有监控、统计功能,便于分析、优化数据库操作。原创 2020-05-23 21:24:23 · 6661 阅读 · 1 评论 -
SpringBoot 基本使用
3、后续创建springboot项目时勾选 Developer Tools -> Spring Boot DevTools,或手动添加 spring-boot-devtools 的依赖,即可实现热部署。引导类上的 @SpringBootApplication 中包含了 @ComponentScan,但默认只扫描引导类同级目录下的组件,不会扫描依赖中的组件。spring boot devtools 需要IDE自动编译的支持,先配置IDE的自动编译、运行时自动编译。高版本的IDEA自带此插件,无需手动安装。原创 2020-05-23 13:18:11 · 5080 阅读 · 1 评论