1. SSM开发面临的问题
- 版本兼容性问题
-
大量的配置
2. SpringBoot的基本概念
2.1. SpringBoot是什么
-
JavaEE的一站式解决方案,一套真正的Spring全家桶应用
-
Spring Boot是为了简化Spring应用的创建、运行、调试、部署等而出现的。
-
使用它可以做到专注于Spring应用的开发,无需过多关注XML的配置。
-
它提供了一堆依赖包,并已经按照使用习惯解决了依赖问题。使用默认方式实现快速开发。
-
提供大多数项目所需的非功能特性,诸如:嵌入式服务器、安全、心跳检查、外部配置等。
-
Spring Boot 不生成代码,完全无需 XML配置,创建即用。
2.2. SpringBoot的开发要求
由于SpringBoot更新很快 并且向前兼容 所以我们可以直接学习
2.4. SpringBoot的四大核心
-
1:自动配置:常用的功能 SpringBoot 自动提供相关配置
-
2:起步依赖:这个怎么表达呢?大概的意思就是:需要什么功能 直接引入starter SpringBoot 它就会引入需要的依赖
-
3:Actuator:能够深入SpringBoot应用程序 让你看到SpringBoot内部信息
-
4:命令行界面:这个是Spring可选特性 主要针对Groovy语言
3.SpringBoot的简单使用
非maven项目可以使用springboot maven项目也可以使用springboot 我们以maven项目说明
3.1. SpringBoot项目创建
3.1.1. 新建maven工程
-
创建maven工程
3.1.2. pom.xml添加主配置依赖
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<!--SpringBoot的父工程 主要是做版本管理-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.5.RELEASE</version>
</parent>
<!--SpringBoot的启动器-->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
3.1.3. 创建一个类
3.1.4. 创建一个controller
3.1.5. 运行main方法
3.1.6.控制台
3.2. springBoot项目疑问
-
疑问一: 我pom文件中 并没有依赖spring和springmvc 为何controller可以直接访问
-
疑问二: 我只是建立了一个普通的java的maven工程 根本就不是web工程 哪来的tomcat
3.2.1. 疑问一说明![](https://i-blog.csdnimg.cn/blog_migrate/c8b086bf531c45798580a7b99de8dbfb.png)
3.2.2. 疑问二说明
3.3. springBoot项目分析
我们还有一些疑问没有解答 就是虽然说间接依赖了web层的很多支持 项目也能正常运行 但是他们的版本在哪指定的 有没有版本兼容性问题呢? 另外我们并没有任何的配置啊 扫描以及注解驱动等等 都没有
3.3.1. 项目分析之父标签
3.3.2. 项目分析之web启动器
3.3.3. 项目分析之启动器
刚才的分析 让我们了解了 虽然说我们只是引入了 web的启动器 但是也间接依赖了springmvc和spring ,虽然说 我们这些包有了 但是我们开发ssm时 需要大量的配置 比如包扫描等等 为何在项目中看不到呢?
- 注解说明
4. SpringBoot脚手架创建工程
4.1. 新建工程
4.2. 填写项目信息![](https://i-blog.csdnimg.cn/blog_migrate/26fc3a69621d4e826da56aebf15a5840.png)
4.3.勾选功能模块
4.4. 删除不需要的信息
4.5. 工程目录介绍
4.6.编写运行
同上3
5. SpringBoot的配置文件
SpringBoot的配置文件分为2种
默认名字:application, 使用这个名字, 会自动识别, 无需额外配置
第一种:properties格式
第二种:yml(yaml)格式
5.1. Properties的语法
5.1.1.配置普通值@Value
5.1.2.配置对象
@ConfigurationProperties 这个注解 表示从主配置文件中 读取配置的内容 读取内容的类 必须在容器中 并且这个注解给属性赋值 依赖set方法 如果不提供set方法 可以使用@Value代替@ConfigurationProperties
5.1.3.配置Map集合
5.1.4.配置集合
5.2. yml格式语法
5.2.1. 配置普通格式@Value
5.2.2. 配置对象
5.2.3. 配置map格式
map格式和对象格式一样 只是不需要指定前缀 而是把前缀当做map的变量名
5.2.4. 配置list格式
5.3. 说明
在SpringBoot的配置文件中 定义变量 接收的方式 有2种
注意:这2种方式所使用的类 必须在spring容器中
-
第一种@Value的方式
这种方式 不依赖于set方法 直接指定配置key 获取值
-
第二种@ConfigurationProperties注解
这种方式需要依赖于set方法 默认从springBoot的配置文件中 读取属性名一致的key 并且可以指定前缀
5.4.配置文件占位符
5.5.加载非本身properties
对象形式接收, 普通形式使用@Value
6.总结
6.1.SpringBoot如何把一个类放入容器中
1.注解 如:Component
2.@Configuration+@Bean
3.xml配置文件
6.2.如何加载外部properties 外部的spring.xml
//加载外部Spring.xml配置文件使用, 如:
@ImportResource("classpath:applicationContext.xml")
//加载的是properties文件, 如:
@PropertySource("classpath:db.properties")
6.3. 配置文件问题
1.properties和yml同时存在
两个配置文件同时存在, 则这两个配置文件都会被加载, 但是properties文件的优先级高, 如果两个文件中, 有相同的配置, 则默认使用的是优先级高得properties当中的配置. 优先级高的晚加载
2.项目内:配置文件位置
项目下的config目录下
项目下
resources下config下
resources下
以上配置文件的位置, 优先级依次降低, 4个配置文件位置都会被加载, 优先使用优先级高的.这4个位置中, 前两个位置没有, 打包的时候默认不会被打进去.
3.项目外:如果项目打成了jar包, 想要修改配置有:
- 修改命令行参数
- 修改虚拟机参数
- 定义一个配置文件( 推荐 ), 放到jar包同目录, 启动则会自动替换默认配置