SpringBoot简述
一、什么是SpringBoot
springboot 是 spring 项目中的一个子工程,也被称为搭建程序的脚手架,可以快速的构建spring项目。boot相对于之前的spring 主要解决了两个问题,
复杂的配置和混乱的依赖管理(不同的jar包版本兼容问题)。
二、boot 特点:
内置tomcat,jetty和undertow(不需要打包成war包部署)
提供了固定的starter配置,简化构建配置
自动配置spring和第三方库
三、boot要知道的注解:
1、@EnableAutoConfiguration 开启自动配置(比如引用了`spring-boot-starter-web`,而这个启动器中帮我们添加了`tomcat`、`SpringMVC`的依赖。)
2、@ComponentScan 开启注解扫描,(> 通过basePackageClasses或者basePackages属性来指定要扫描的包。
如果没有指定这些属性,那么将从声明这个注解的类所在的包开始,扫描包及子包
而我们的@ComponentScan注解声明的类就是main函数所在的启动类,因此扫描的包是该类所在包及其子包)
3、@SpringBootApplication,发现@SpringBootApplication其实是一个组合注解,这里重点的注解有3个:
- @SpringBootConfiguration :申明是个配置类
- @EnableAutoConfiguration:开启自动配置
- @ComponentScan:开启注解扫描
四、boot的属性注入
1、新建JdbcProperties
,用来进行属性注入:
在类上通过@ConfigurationProperties注解声明当前类为属性读取类
prefix="jdbc"
读取属性文件中,前缀为jdbc的值。在类上定义各个属性,名称必须与属性文件中
jdbc.
后面部分一致,并且必须具有getter和setter方法
2、在JdbcConfiguration中使用这个属性:
通过
@EnableConfigurationProperties(JdbcProperties.class)
来声明要使用JdbcProperties
这个类的对象然后你可以通过以下方式在JdbcConfiguration类中注入JdbcProperties:
@Autowired注入 (全局变量加注解直接注入)
构造函数注入 (定义一个去全局变量 ,构造函数里给这个变量赋值)
- @bean方法的参数注入 (类上加注解@EnableConfigurationProperties 参数传递定义的配置类)
五、boot的配置:
使用类和一些注解来达到和xml一样的效果,典型的几个:
1、@Configuration`:声明一个类作为配置类,代替xml文件
2、@Bean`:声明在方法上,将方法的返回值加入Bean容器,代替`<bean>`标签
3、@Value`:属性注入
4、@PropertySource`:指定外部属性文件。
六、添加一个拦截器:
拦截器interceptor比较实用,例如记录某个接口的访问过程等,
1、定义一个拦截器类,实现handlerInterceptor 接口,重写该接口的方法 请求前 请求后 post请求 拦截做一些操作。
@Component
public class MyInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("preHandle method is running!");return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("postHandle method is running!");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("afterCompletion method is running!");}
}
2、定义一个配置类,注册定义好的拦截器,实现webmvcConfigr接口,重写 addInterceptor方法,添加进去。
@Configuration
public class MvcConfiguration implements WebMvcConfigurer {@Autowiredprivate HandlerInterceptor myInterceptor;/*** 重写接口中的addInterceptors方法,添加自定义拦截器* @param registry*/@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(myInterceptor).addPathPatterns("/**");}
}
3、运行并查看日志:
preHandle method is running! postHandle method is running! afterCompletion method is running!
你会发现日志中只有这些打印信息,springMVC的日志信息都没有,因为springMVC记录的log级别是debug,springboot默认是显示info以上,我们需要进行配置。
SpringBoot通过logging.level.*=debug
来配置日志级别,*填写包名
# 设置org.springframework包的日志级别为debug logging.level.org.springframework=debug
就可以看到mvc的运行日志
SpringBoot简述相关推荐
- springboot——pom.xml 配置文件的设置
软件152 蒲双 一.springboot简述概念 从最根本上来讲,Spring Boot就是一些库的集合,它能够被任意项目的构建系统所使用.简便起见,该框架也提供了命令行界面,它可以用来运行和测试B ...
- 微服务常见面试题(Java、数据库、Redis、SpringCloud面试题)
Redis 本质上是一个 Key-Value 类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据 flush 到硬 盘上进行保存. 因为是纯内 ...
- 微服务常见面试题(Java、数据库、Redis面试题)
Redis 本质上是一个 Key-Value 类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据 flush 到硬 盘上进行保存. 因为是纯内 ...
- 简述SpringBoot Starter原理及自定义实现
简述SpringBoot Starter原理及自定义实现 一.简述 二.结合SpringBoot启动原理看容器如何实现自动装配 三.解析mybatis-spring-boot-starter包看myb ...
- Springboot启动流程简述
Springboot提高了开发效率,简化了配置,往往使用一些注解就可以使项目跑起来,下面理一下Springboot的启动流程.Springboot版本:2.2.4.RELEASE 以下是一个常见的Sp ...
- 二、SpringBoot配置-简述配置加载原理
springboot使用一个全局配置文件 application.properties application.yml 配置文件放在src/main/resources目录或者类路径/config下 ...
- 简述Spring、SpringMVC、SpringBoot关系?
1.Spring Spring是一个轻量级的Java开发框架,核心是SpringIOC(控制反转)和SpringAOP(面向切面),针对开发的web层.业务层.持久层等都提供了多种配置解决方案. 主要 ...
- 记录这两年的学习以及简述这次基于springboot框架的课程设计和打war包部署的坑
一.前言 一想都是满满的经历呀.如果不想看我废话,可以直接跳到后面. 1 关于编程 1.1 C.C++ 作为一名软件工程生,编程是我以后自力更生的必备技能.奈何大一的我不懂得轻重,基本没有把精力放在编 ...
- SpringBoot史前简述
背景 大约20年前,程序员们使用"企业级Java Bean"(EJB)开发企业应用,需要配置复杂的XML. 在二十世纪初期,新兴Java技术--Spring,横空出世.使用极简XM ...
最新文章
- 检测主机是否在线小脚本
- C++使用Merge Sort排序计数反转的实现算法(附完整源码)
- webserver介绍与实现(利用各模块的封装实现)
- win7_64 安装 caffe
- 同济大学计算机保研名单,同济大学2021届保研率27.8%,主要保研本校、复交清国...
- python编程框架_python编程基础框架
- linux 设置注释颜色,【转】vim注释和光标高亮行列的颜色设置
- 打印学生选课清单(25分) c++实现
- 陆奇加入拼多多,担任技术委员会主席!
- 青青日记app界面原型
- (2/2) sharex录制屏幕没有声音,升级高版本的 sharex
- 从微信打开链接不能正常上下滑动
- 系统设计开发模式思考
- uni-app 184查看好友朋友圈完善(五)
- 凤凰卫视:收受瑞星巨额贿赂官员被捕视频
- 哈希表冲突及处理冲突的方法(含例子)
- playwright python版本学习五-->locator常用定位总结
- 【6S管理操作手册】
- 多任务进化优化算法(一)——多因子进化算法(MFEA)
- 关于猜数字游戏的实现