2019-04-05 Spring Boot学习记录
1. 使用步骤
① 在pom.xml 增加父级依赖(spring-boot-starter-parent)
② 增加项目起步依赖,如spring-boot-starter-web
③ 配置JDK版本插件
④ 增加入口类
public static void main(String[] args){
SpringApplication.run(当前类.class,args)
}
⑤ 给main所在类增加注解@EnableAutoConfiguration声明启用自动配置
2. @EnableAutoConfiguration
- 该注解声明启用自动配置
- 自动配置的类位于org.springframework.boot.autoconfigure包下
- 相对应的功能自动配置位于对应的子包下
- 使用属性exclude={XXXAutoConfiguration.class}关闭对应的自动配置
3. 改变banner(启动时的字符图)
① 借助工具生成自己的文本图案http://www.patorjk.com/software/taag/#p=display&f=Graffiti&t=
② 放入banner.txt
③ 把文件放入resource路径下
4. 全局配置文件
- 名字必须是 application 如application.properties或application.yml
- 一般放入类路径下或resource路径下
- server.port 修改服务器容器端口
- server.context-path 修改服务根路径
- 自定义属性值(如 book.name=SpringBoot),可以通过@Value("${book.name}")注入到属性中;或采用类型安全的配置,先在类增加注释@ConfigurationProperties(prefix="book"),再通过同名属性(需要有setter、getter)来得到值
- Profile配置:使用application-*.properties作为各个环境下的配置,通过application.properties中设置
spring.profile.active=后缀名来指定活动的Profile
logging.config 指定日志文件 spring.mvc.view.prefix 配置Web前缀spring.mvc.view.suffix 配置Web后缀spring.resources.static-locations=classpath:XXX 配置静态资源的路径spring.http.encoding.force=true 开启response编码设置为utf-8
5. 自动配置的原理
- 通过查找是否包含某个类来启用对应的配置类
6. 创建父级工程
① 父工程的packaging必须是POM
② 通过Ctrl点击parent查看原来jar包的管理,把它放入到当前pom中
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.4.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
如果出现版本丢失,需要加上type和scope标签
③ 把相关的插件都放入到父pom中
④ 子工程的parent改为自己的父级工程
7. Spring Boot整合测试
① pom引入 junit和spring-boot-starter-test
② 测试类指定要测试的类 @SpringBootTest(classes=XxxController.class)
③ 测试类指定执行测试的类 @RunWith(SpringJUnit4ClaaRunner.class)
④ 测试类跟web整合 @WebAppConfiguration
⑤ 注入测试对象
@Autowired
private XxxController xxxController;
⑥ 编写测试方法,使用TestCase进行断言
8. 注解
- @EnableAutoConfiguration 启动自动配置
- @ComponentScan("包名") 自动扫描的包(默认扫描当前包和当前包的子包,当启动自动配置的类与要使用Spring组件注解的类不在同一包下,则需要增加该注解)
- @SpringBootApplication 代替上面两个注解的组合注解(默认扫描当前包和当前包的子包)@ResponseBody 表示返回的是Restful内容,不使用该注解会进行跳转
- @Controller 声明该类是一个Controller类
- @RestController 声明该类是一个每个返回结果都是Restful内容的Controller类,方法里可以省略@ResponseBody注解
- @PathVariable 把mapping中{}的值赋值给变量
9. 日志使用
private Logger logger = LoggerFactory.getLogger(this.getClass());
10. 配置为开发模式
- 可以不需要每次重启
- 加入两个依赖(springloaded、spring-boot-devtools)即可
11. WEB项目访问静态资源
- 默认情况下,Spring Boot从classpath的/static,/public或/META-INF/resources文件夹或从ServletContext根目录提供静态内容
- 也可以通过全局配置设置静态目录
12. 自定义消息转换器
- 只需要在类中添加消息转换器的@Bean,就会被SpringBoot自动加入到容器中
- SpringBoot自动配置了消息转换器
13. 使用FastJson解析Json数据
① 引入FastJson的依赖包
② 配置FastJson
- 让启动类继承WebMvcConfigurerAdapter,重写消息转换器配置方法,方法中把FastJson消息转换器放入集合中
- 使用@Bean注入HttpMessageConverters
14. 自定义拦截器
① 继承WebMvcConfigurerAdapter,并增加@Configuration声明这是一个配置
② 重写addInterceptors方法
③ 写自己的拦截器 new HandlerInterceptor()
④ 把自己的拦截器加入到集合中,并增加拦截路径
⑥ 在入口类中增加扫描
15. 全局异常处理器(使用aop)
① 定义一个处理类,使用@ControllerAdvice声明通知
② 增加方法,使用@ExceptionHandler声明处理哪些异常
③ 增加@ResponseBody声明返回值
16. 异步调用
① 增加服务实现类增加注解@Service
② 方法中增加注解@Async声明启动线程执行
③ 启动类中增加扫描注解
④ 启动类增加@EnableAsync开启异步调用
17. Spring Boot整合JSP
① 需要创建web工程
② 增加依赖spring-boot-starter-tomcat、tomcat-embed-jasper
③ 增加插件来省略web.xml
<build>
<plugins>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugins>
</build>
④ 全局配置文件配置前缀后缀
18. Spring Boot整合Freemarker
① 引入依赖spring-boot-starter-freemarker
② 在resource的templates放置模板文件或者通过全局配置进行设置
19. Spring Boot整合Thymeleaf
① 引入依赖spring-boot-starter-thymeleaf
② 在resource的templates放置模板文件或者通过全局配置进行设置
20. Spring Boot整合QuartZ
21. Spring Boot整合JdbcTemplate
22. Spring Boot整合Mybatis(xml方式)
① 引入mybatis-spring-boot-starter依赖、数据库jar依赖、阿里的连接池(druid-spring-boot-starter、druid)、
分页插件依赖(pagehelper-spring-boot-starter)
② 在全局配置文件中增加数据源配置、Mybatis的核心配置和Mapper配置的路径等、分页插件的配置
③ 增加Mybatis配置:在resource下放置Mybatis配置文件、Mapper配置文件
④ 启动类需要使用@MapperScan单独扫描Mapper接口类
23. Spring Boot整合Mybatis(注解方式,在Mapper接口中使用注解而不是xml文件)
① 引入mybatis-spring-boot-starter依赖、数据库jar依赖、阿里的连接池(druid-spring-boot-starter、druid)、
分页插件依赖(pagehelper-spring-boot-starter)
② 启动类使用@MapperScan单独扫描Mapper接口类
24. Spring Boot区分多数据源
- 方式:
- 通过包来区分(推荐)
- 使用注解来区分
- 过程:
- 1.在配置文件中增加自定义属性来存放数据库连接信息
- 2.增加不同数据源的数据源配置类(@Configuration),使用@MapperScan配置扫描的Mapper包和使用的session工厂;配置类中增数据库相关的注入bean
- 3.在Mapper接口类中使用@Qualifier("数据源")选择数据源
25. Spring Boot事务管理
- 使用@Transactional注解
26. Spring Boot整合JPA(Hibernate实现)
27. Spring Boot整合Mail
28. Spring Boot打包发布
① POM需要时war类型
② 需要把spring-boot-starter-tomcat的scope设置为provided
③ 让启动类继承SpringBootServletInitializer
④ 重写Cconfigure,通过参数指定启动类 builder.source(XXX.class)
⑤ run as Maven
⑥ 把war包放入tomcat
2019-04-05 Spring Boot学习记录的更多相关文章
- Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客
==他的博客应该不错,没有细看 Spring Boot学习记录(二)--thymeleaf模板 - CSDN博客 http://blog.csdn.net/u012706811/article/det ...
- 我的Spring Boot学习记录(二):Tomcat Server以及Spring MVC的上下文问题
Spring Boot版本: 2.0.0.RELEASE 这里需要引入依赖 spring-boot-starter-web 这里有可能有个人的误解,请抱着怀疑态度看. 建议: 感觉自己也会被绕晕,所以 ...
- 【转载】Spring boot学习记录(二)-配置文件解析
前言:本系列文章非本人原创,转自:http://tengj.top/2017/04/24/springboot0/ 正文 Spring Boot使用了一个全局的配置文件application.prop ...
- 【转载】Spring boot学习记录(一)-入门篇
前言:本系列文章非本人原创,转自:http://tengj.top/2017/04/24/springboot0/ 正文 首先声明,Spring Boot不是一门新技术.从本质上来说,Spring B ...
- 我的Spring Boot学习记录(一):自动配置的大致调用过程
1. 背景 Spring Boot通过包管理工具引入starter包就可以轻松使用,省去了配置的繁琐工作,这里简要的通过个人的理解说下Spring Boot启动过程中如何去自动加载配置. 本文中使用的 ...
- 【转载】Spring boot学习记录(三)-启动原理解析
前言:本系列文章非本人原创,转自:http://tengj.top/2017/04/24/springboot0/ 正文 我们开发任何一个Spring Boot项目,都会用到如下的启动类 @Sprin ...
- Spring boot 学习记录
java的三种配置方式 基于xml的配置 基于注解的配置 基于java的配置 Spring boot推荐的配置方式:java配置+注解配置 一.注解 SpringBootApplication :等价 ...
- Spring Boot学习记录03_一些属性配置文件
转自:http://blog.didispace.com/springbootproperties/ 多环境配置(这个地方跟maven的profile配置有点类似) 我们在开发Spring Boot应 ...
- Spring Boot学习记录(二)–thymeleaf模板
自从来公司后都没用过jsp当界面渲染了,因为前后端分离不是很好,反而模板引擎用的比较多,thymeleaf最大的优势后缀为html,就是只需要浏览器就可以展现页面了,还有就是thymeleaf可以很好 ...
随机推荐
- 拓扑排序的 +Leapms 线性规划模型
知识点 拓扑排序 拓扑排序的+Leapms模型 无圈有向图 一个图G(V,E), 如果边有向且不存在回路,则为无圈有向图.在无圈有向图上可以定义拓扑排序.下图是一个无圈有向图的例子. 拓扑排序 给定一 ...
- vue + element 动态渲染、移除表单并添加验证
博客地址:https://ainyi.com/66 又接到新需求了吧~~ 背景 在一个大表单里,有可能会出现这种需求,用户可以自己操作动态添加.移除表单,更加个性化的效果. 常见于填写个人信息.附加内 ...
- 微信ChatEmoji表情适配,对微信公众号开发有帮助
最近做微信公众号时发现微信ChatEmoji表情与接受的消息显示表情的问题, 微信表情后面的ChatEmoji显示不出,花了一些时间整理,把pc和手机的表情全部都整理了, 由于有两百多个显示可能有点长 ...
- 如何在windows系统下安装swoole
swoole框架是一个很神奇很厉害的框架,它弥补了PHP的本身的一些不足之处.其实swoole确切的说是一个使用C语言编写的PHP扩展,并且这个扩展不能够在windows系统使用,但是就目前的开发环境 ...
- Java自增和自减操作符——++/--的那些事
1. 概述 自增操作符(++)和自减操作符(--)是对变量进行加1和减1的操作. 2.分类说明 ++和--是对变量进行自增1和自减1的简写操作符.许多编程任务中经常需要对变量加1或者减1,所以采用这两 ...
- v-if与v-show的使用
vue中的v-if与v-show 区别:v-if='false'的会直接在html里删掉,浏览器中看html的结构不会有 v-show='false'只是样式为overflow:hidden; 所以很 ...
- vue 使用定时器setInterval
来自:https://www.jianshu.com/p/180957762852 侵删 beforeMount() { //车辆进出设置定时器,每3秒刷新一次 var self = this; cl ...
- 处理范例代码Webapi中的Mongodb的Bson中ObjectId反序列化异常
微软代码范例中的一个Bug 处理Mongodb的Bson中ObjectId反序列化异常 https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/f ...
- odoo 12企业版与免费社区版的区别,价格策略与技术支持指南的全面解析
Odoo / Ps Cloud收费企业版是对社区版的极大增强,除了增加了很多功能外,最大的功能区别是企业版支持条码而社区版不支持,企业版对手机支持更好.有单独的APP,最重要区别的是企业版提供底层技术 ...
- OPPO realme 2在哪里打开Usb调试模式的简单步骤
每当我们使用PC通过数据线链接到安卓手机的时候,如果手机没有开启USB调试模式,PC则没能成功识别我们的手机,这时我们需要找解决方法将手机的USB调试模式开启,下文我们记录一下OPPO realme ...