SpringBoot 开局篇
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);
}
}
过滤器配置
消息转换器配置
第一种方式
@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;
}
}第二种方式
@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 开局篇的更多相关文章
- (二)SpringBoot基础篇- 静态资源的访问及Thymeleaf模板引擎的使用
一.描述 在应用系统开发的过程中,不可避免的需要使用静态资源(浏览器看的懂,他可以有变量,例:HTML页面,css样式文件,文本,属性文件,图片等): 并且SpringBoot内置了Thymeleaf ...
- 视频作品《springboot基础篇》上线了
1.场景描述 第一个视频作品出炉了,<springboot基础篇>上线了,有需要的朋友可以直接点击链接观看.(如需购买,请通过本文链接购买) 2. 课程内容 课程地址:https://ed ...
- SpringBoot Web篇(二)
摘要 继上一篇 SpringBoot Web篇(一) 文件上传 当我们服务器需要接收用户上传的文件时,就需要使用MultipartFile作为参数接收文件.如下: @PostMapping(" ...
- (一)SpringBoot基础篇- 介绍及HelloWorld初体验
1.SpringBoot介绍: 根据官方SpringBoot文档描述,BUILD ANYTHING WITH SPRING BOOT (用SPRING BOOT构建任何东西,很牛X呀!),下面是官方文 ...
- SpringBoot基础篇AOP之基本使用姿势小结
一般来讲,谈到Spring的特性,绕不过去的就是DI(依赖注入)和AOP(切面),在将bean的系列中,说了DI的多种使用姿势:接下来看一下AOP的玩法 <!-- more --> I. ...
- JAVAEE——SpringBoot日志篇:日志框架SLF4j、日志配置、日志使用、切换日志框架
Spring Boot 日志篇 1.日志框架(故事引入) 小张:开发一个大型系统: 1.System.out.println(""):将关键数据打印在控制台:去掉?写在一个文件 ...
- SpringBoot入门篇--整合mybatis+generator自动生成代码+druid连接池+PageHelper分页插件
原文链接 我们这一篇博客讲的是如何整合Springboot和Mybatis框架,然后使用generator自动生成mapper,pojo等文件.然后再使用阿里巴巴提供的开源连接池druid,这个连接池 ...
- SpringBoot入门篇--对于JSON数据的返回以及处理二
我们在进行开发的过程的难免会进行对象的返回,比如一个用户对象User,以及一个集合list,Map等等.在这篇博客中我们就是需要学习一下怎么对一个对象中某些属性的处理.需要补充的一点就是SpringB ...
- SpringBoot 第一篇:入门篇
作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/10819728.html 版权声明:本文为博主原创文章,转载请附上博文链接! 前言 博主从去年 ...
随机推荐
- 深入MySQL(三):MySQL的索引的应用
在MySQL的优化中,索引的作用绝对算是一个大头,很多时候索引使用得当可以使得一个查询的效率提高几个数量级,同时它还具有自动排序等功能.所以如果是深入MySQL,那么索引绝对是其中重要的一部分. My ...
- [源码解析] NVIDIA HugeCTR,GPU版本参数服务器--- (5) 嵌入式hash表
[源码解析] NVIDIA HugeCTR,GPU版本参数服务器--- (5) 嵌入式hash表 目录 [源码解析] NVIDIA HugeCTR,GPU版本参数服务器--- (5) 嵌入式hash表 ...
- Spring boot 项目中put提交Date数据时出现type=Bad Request, status=400状态码
1.问题原因 经过测试发现,当客户端页面提交日期为空时会出现以下异常,如果提交日期不为空则不会出现上述问题.出现这种错误的原因是没有对代码中的Date型参数进行格式化,接收为null的日期类型参数时, ...
- Devops 开发运维高级篇之微服务代码上传和代码检查
Devops 开发运维高级篇之微服务代码上传和代码检查 微服务持续集成(1)-项目代码上传到Gitlab 微服务持续集成(2)-从Gitlab拉取项目源码 微服务持续集成(3)-提交到SonarQub ...
- 最强端口扫描器Nmap
实验目的 利用nmap命令探测出目标系统开放的端口和服务类型. 实验原理 Nmap是一个综合的.功能全面的端口扫描工具主机发现:nmap可以用来查找目标网络中在线主机.默认情况下,nmap通过icmp ...
- 传统式与自助式BI分析平台有什么区别
如今自助式BI分析平台已经成为众多企业进行数据分析工作时的首选,究竟自助式BI分析平台在数据分析中有哪些优势,可以受到企业如此的青睐与追捧呢?小编将在本文中,跟大家一起来了解自助式BI分析平台的概念. ...
- 厌倦了excel绘制地图的繁琐操作,来看看这款可视化地图神器!
在现代生活中,地图无论对于社会主义建设.国防.运输以至旅行都是不可缺少的.要学会正确地使用地图,必须学会如何绘制地图. 最近我发现了一款好用的可视化地图神器,比excel做地图可视化好一万倍!其实呢, ...
- RDD的运行机制
1. RDD 的设计与运行原理 Spark 的核心是建立在统一的抽象 RDD 之上,基于 RDD 的转换和行动操作使得 Spark 的各个组件可以无缝进行集成,从而在同一个应用程序中完成大数据计算任务 ...
- 哈工大 计算机网络 实验二 可靠数据传输协议(停等协议与GBN协议)
计算机网络实验代码与文件可见github:计算机网络实验整理 实验名称 可靠数据传输协议(停等协议与GBN协议) 实验目的: 本次实验的主要目的. 理解可靠数据传输的基本原理:掌握停等协议的工作原理: ...
- 2020.10.6 ThreadLocal
在多线程环境下,每个线程都有自己的数据.一个线程使用自己的局部变量比使用全局变量要好,因为局部变量不会被其他线程改变. 但是局部变量也存在问题--在函数调用的时候,传递起来很麻烦: def proce ...