SpringBoot

SpringBoot 是什么

 SpringBoot 是为了简化配置文件开发的一种解决方案
 SpringBoot 遵从 规范大于配置
 SpringBoot 内置传统 Spring 能够整合的所有框架的配置文件,所以项目可以独立运行,无需依赖外部的 Servlet 容器

SpringBoot 能干什么

 内置了框架的配置文件,在进行框架整合的时候不需要写 或者 写很少的配置就能完成一个框架的整合功能
 备注:SpringBOot 中的所有框架的配置文件都是通过 Java 代码来编写的

SpringBoot 开发模式的写法

###

SpringBoot 如何实现自动配置(源码分析)

疑问:在 SpringBoot 启动的同时是否将 SpringBoot 内置的上百个框架都给配置了呢?

 在 SpringBoot 启动的时候,他会去读取一个清单文件,清单文件中表明了所有的自动配置类
 然后通过自动配置类中的 条件注解 进行判断当前配置是否 使能,若 使能,则配置,否则不配置;
 使能的条件则是通过 条件注解 去判断

SpringBoot 的全局配置

 全局参数使用场景:
 1、整合数据库,配置数据库链接的四要素
 2、整合 Redis,主机,端口,密码
 3、整合 SpringMVC, 前端传递参数的格式
 4、服务端口 .....

全局配置在创建项目时便默认在 resources 目录下 application.properties

eg:

 # 给 SpringBoot 项目取个名字
 spring.application.name=lgl
 ​
 # 给服务设置端口
 server.port=9999
 ​
 # 设置 banner 的路径
 spring.banner.location=classpath:banner.txt
 ​
 # 设置 banner 图片
     # 图片地址
 spring.banner.image.location=classpath:banner.jpg
     # 图片 宽 高
 spring.banner.image.height=76
 spring.banner.image.width=76
     # 图片边幅
 spring.banner.image.margin=2
 # 图片反转
 spring.banner.image.invert=true
 ​
 # 给指定包设置日志级别
 logging.level.org.itword.study=info
 ​
 # 设置 SpringMVC 相关参数
 spring.mvc.date-format=yyyy-MM-dd HH:mm:ss.SSS
 ​
 # Elasticsearch
 spring.data.elasticsearch.cluster-name=elasticsearch
 # Comma-separated list of cluster node addresses. If not specified, starts a client node.
 spring.data.elasticsearch.cluster-nodes=
 # Additional properties used to configure the client.
 spring.data.elasticsearch.properties.*=
 # Enable Elasticsearch repositories.
 spring.data.elasticsearch.repositories.enabled=true

SpringBoot 中的 Starter POM 问题

Starter POM 是啥?

在 SpringBoot 中为了简化开发配置,需要导入使用场景,导入后就能够导入该场景下的所有包,以此实现自动配置

SpringBoot 的使用场景有哪些?

SpringBoot 中常规的 MVC 配置

拦截器配置

  • 拦截器类

     @Component
     public class AuthenticationInterceptor implements HandlerInterceptor {
     ​
         private final Logger logger = LoggerFactory.getLogger(AuthenticationInterceptor.class);
         /**
          * 用来拦截
          * @param request
          * @param response
          * @param handler
          * @return false 表示拦截,true 表示不拦截
          * @throws Exception
          */
         @Override
         public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
             logger.info("----------------------接收请求,开始拦截----------------------");
             return true;
        }
     ​
     }
  • 添加拦截器

     @Configuration
     public class WebMvcConfig extends WebMvcConfigurationSupport {
     ​
         @Autowired
         private AuthenticationInterceptor interceptor;
     ​
         /**
          * 添加拦截器
          * @param registry
          */
         @Override
         protected void addInterceptors(InterceptorRegistry registry) {
             registry.addInterceptor(interceptor);
             super.addInterceptors(registry);
        }
     }

过滤器配置

消息转换器配置

  1. 第一种方式

     @Configuration
     @ComponentScan(basePackages = "org.itword.study")
     public class AppConfig {
     ​
         /**
          * 配置 SpringMVC 消息转换器
          * 若配置类中没有配置该条件则使用场景内的默认配置;若配置类中存在该实体配置 bean ,则读取自定义配置 bean,场景内的默认 bean 就不生效
          * @return
          */
         @Bean
         public FastJsonHttpMessageConverter fastJsonHttpMessageConverter(){
             FastJsonHttpMessageConverter fastJson = new FastJsonHttpMessageConverter();
             fastJson.setDefaultCharset(Charset.forName("UTF-8"));
             return fastJson;
        }
     ​
         /**
          * 如果返回的是字符串,则使用该消息转换器来配置
          * @return
          */
         @Bean
         public StringHttpMessageConverter stringHttpMessageConverter (){
             StringHttpMessageConverter stringJson = new StringHttpMessageConverter(Charset.defaultCharset());
             return stringJson;
        }
     ​
     }
  2. 第二种方式

     @Configuration
     public class WebMvcConfig extends WebMvcConfigurationSupport {
     ​
         @Override
         protected void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
             FastJsonHttpMessageConverter fastJsonHttpMessageConverter = new FastJsonHttpMessageConverter();
             fastJsonHttpMessageConverter.setDefaultCharset(Charset.forName("ISO-8859-1"));
     ​
             StringHttpMessageConverter stringMessageConverter = new StringHttpMessageConverter();
             stringMessageConverter.setDefaultCharset(Charset.forName("ISO-8859-1"));
     ​
             converters.add(fastJsonHttpMessageConverter);
             converters.add(stringMessageConverter);
     ​
             super.configureMessageConverters(converters);
        }
     }

SpringBoot 开局篇的更多相关文章

  1. (二)SpringBoot基础篇- 静态资源的访问及Thymeleaf模板引擎的使用

    一.描述 在应用系统开发的过程中,不可避免的需要使用静态资源(浏览器看的懂,他可以有变量,例:HTML页面,css样式文件,文本,属性文件,图片等): 并且SpringBoot内置了Thymeleaf ...

  2. 视频作品《springboot基础篇》上线了

    1.场景描述 第一个视频作品出炉了,<springboot基础篇>上线了,有需要的朋友可以直接点击链接观看.(如需购买,请通过本文链接购买) 2. 课程内容 课程地址:https://ed ...

  3. SpringBoot Web篇(二)

    摘要 继上一篇 SpringBoot Web篇(一) 文件上传 当我们服务器需要接收用户上传的文件时,就需要使用MultipartFile作为参数接收文件.如下: @PostMapping(" ...

  4. (一)SpringBoot基础篇- 介绍及HelloWorld初体验

    1.SpringBoot介绍: 根据官方SpringBoot文档描述,BUILD ANYTHING WITH SPRING BOOT (用SPRING BOOT构建任何东西,很牛X呀!),下面是官方文 ...

  5. SpringBoot基础篇AOP之基本使用姿势小结

    一般来讲,谈到Spring的特性,绕不过去的就是DI(依赖注入)和AOP(切面),在将bean的系列中,说了DI的多种使用姿势:接下来看一下AOP的玩法 <!-- more --> I. ...

  6. JAVAEE——SpringBoot日志篇:日志框架SLF4j、日志配置、日志使用、切换日志框架

    Spring Boot 日志篇 1.日志框架(故事引入) 小张:开发一个大型系统: ​ 1.System.out.println(""):将关键数据打印在控制台:去掉?写在一个文件 ...

  7. SpringBoot入门篇--整合mybatis+generator自动生成代码+druid连接池+PageHelper分页插件

    原文链接 我们这一篇博客讲的是如何整合Springboot和Mybatis框架,然后使用generator自动生成mapper,pojo等文件.然后再使用阿里巴巴提供的开源连接池druid,这个连接池 ...

  8. SpringBoot入门篇--对于JSON数据的返回以及处理二

    我们在进行开发的过程的难免会进行对象的返回,比如一个用户对象User,以及一个集合list,Map等等.在这篇博客中我们就是需要学习一下怎么对一个对象中某些属性的处理.需要补充的一点就是SpringB ...

  9. SpringBoot 第一篇:入门篇

    作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/10819728.html 版权声明:本文为博主原创文章,转载请附上博文链接! 前言   博主从去年 ...

随机推荐

  1. kubeadm + containerd 部署 k8s-v1.23.3(含证书升级)

    文章目录 前言 环境准备 答应我,所有节点都要关闭防火墙 答应我,所有节点都要关闭selinux 答应我,所有节点都要关闭swap 答应我,所有节点都要开启内核模块 答应我,所有节点都要开启模块自动加 ...

  2. shell脚本批量配置多台主机静态ip

    关于脚本 服务器使用之前,都需要先配置静态IP,那就将这种简单重复的工作,交给脚本来处理吧,让我们运维有更多的时间喝茶看报刷微博 脚本使用 sh ssh.sh ip.txt ssh.sh 为脚本的名称 ...

  3. Vue2.0源码学习(1) - 数据和模板的渲染(上)

    准备 一.首先去GitHub上把vue源码download下来,传送门:https://github.com/vuejs/vue 二.搭建一个vue-cli跑起来,用于代码调试,不看着代码动起来只看源 ...

  4. Redis——入门学习笔记

    Redis学习 说到前面:这篇笔记只是我作为一个Redis新手,从0到认知的一个过程.后续会持续深入学习. 学习初衷和计划 学习Redis,因为这是热门技术,必须掌握的技术,别人都会我不会.就这一点就 ...

  5. dart系列之:集合使用最佳实践

    目录 简介 使用字面量创建集合 不要使用.length来判断集合是否为空 可遍历对象的遍历 List.from和iterable.toList where和whereType 避免使用cast 总结 ...

  6. 云原生 PostgreSQL 集群 - PGO:来自 Crunchy Data 的 Postgres Operator

    使用 PGO 在 Kubernetes 上运行 Cloud Native PostgreSQL:来自 Crunchy Data 的 Postgres Operator! Cloud Native Po ...

  7. Smartbi制作报表教程:热销车型分类排名总表

    今天Smartbi给大家分享 热销车型分类排名总表 这张移动端报表的制作过程. 制作工具:Smartbi云报表 Smartbi云报表是一款基于Office Excel的SAAS BI工具,支持在Exc ...

  8. 2021年国内BI厂商推荐_大数据分析工具

    随着互联网大数据时代的不断发展,BI让企业的工作效率变得更高效.BI的功能也随着需求的增长不断地丰富,例如,数据可视化大屏.可视化表格.商业化数据分析.数据地图等.国外的厂商在很多场景下无法满足国内的 ...

  9. idea教程--如何使用码云管理代码

    1.安装Gitee插件 由于我已经安装过了,请参加白色背景的图 2.idea配置git 3.配置码云账号 4.配置ssh秘钥(注意:如果之前安装git已经配置过了可以跳过此步) (1) 生成SSH秘钥 ...

  10. JZ-013-调整数组顺序使奇数位于偶数前面

    调整数组顺序使奇数位于偶数前面 题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对 ...