目录
概述
常见的SSM搭建项目弊端
什么是springboot
特点
1.简化部署
2.简化配置,注解代替xml
3.简化依赖配置
4.应用监控
springboot与springmvc,springcloud关系
创建springboot项目
spring4提供的注解
Spring的发展
Java配置
1.核心注解
@Configuration
@Bean
springboot核心
入口类
@SpringBootApplication注解
@SpringBootApplication的属性
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan
配置文件
全局配置文件
自定义配置值
格式
普通值,如数字,字符串,布尔
对象/map类型,即有键值对
数组,List,Set
嵌套
读取指定配置文件配置的值
@PropertySource(value={"classpath:jdbc.properties"})+@Value
@ConfigurationProperties(perfix="persion")
@ImportResource(classpath:xxxx.xml)
@Import 导入额外的配置信息
概述
常见的SSM搭建项目弊端
上手麻烦,很多框架的初学者根本不知道要从何开始搭建一个项目,对初级开发者很不友好
配置繁杂,使用一个框架,或者向项目中集成一个插件,要专门学习配置文件,哪怕是细微的配置错误,也会导致无法使用,而且排查起来特别困难,对初级开发者很不友好
项目需要单独配置容器,编写好的项目还需要自己配置Tomcat运行,又多了一个额外的步骤,一旦配置有问题,又可能要折腾很久,对初级开发者很不友好
什么是springboot
spring组件的一站式快速开发框架,避免了众多繁琐的配置,极大的简化了开发者的学习成本,项目搭建成本,对初级开发者十分友好
特点
1.简化部署
内置tomcat,jetty容器,不再需要开发者打成war包部署到容器中,只要打成一个独立的jar就可以独立运行,所有依赖均在一个jar包中
2.简化配置,注解代替xml
注解代替xml是spring4.x的核心功能,springboot的配置文件只有一个application.yml,开发者不再需要配置一大堆的xml,properties
使用一个第三方框架的配置变得十分简单
3.简化依赖配置
springboot启动器会将一组依赖打包到一起,作为一个启动器,比如spring-boot-starter-web包含了web开发需要的spring-web,springmvc等依赖
4.应用监控
springboot可以监控服务和应用
springboot与springmvc,springcloud关系
1.springboot是spring组件的一站式快速开发框架
2.springmvc是基于spring的mvc框架
3.springboot是springcloud的基础,springcloud是一站式微服务框架
创建springboot项目
1.打开IDEA,创建新项目,选择Spring Initializr,填写路径和项目名,选择maven作为构建工具,选择JDK版本
2.选择初始化项目时要导入的依赖,这里我们因为是简单演示,只选择了spring-web,有需要可以挨个点开看看哪些是可能用到的,可以一并导入,点击确定即创建项目
3.配置SDK和maven,等待maven依赖导入完成即可,到这一步,这个springweb项目就创建完成了,我们完全没有配置什么spring文件,springmvc文件
4.启动项目
点击main方法的启动按钮,或者使用IDEA上面的启动按钮,就可以使用springboot内置的tomcat容器来启动我们的项目,我们完全没有自己手动打包,配置tomcat去运行
5.看看我们的pom文件,有一个web项目启动器
spring-boot-start-parent
封装好了版本号,提供版本控制,导入它以后,导入其他依赖时不再需要配置version
spring-boot-starter-web
springweb核心组件,包含了web项目所需所有核心依赖
原理是maven依赖的子父关系
springboot把需要的一类依赖封装好,导入一个依赖就可以应用
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
点进去会发现包含多个依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>3.1.5</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-json</artifactId>
<version>3.1.5</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>3.1.5</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>6.0.13</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>6.0.13</version>
<scope>compile</scope>
</dependency>
</dependencies>
spring4提供的注解
Spring的发展
1.Spring1.X完全通过xml配置
2.Spring2.X可以使用注解对Bean进行声明和注入
1.应用的基本配置用xml
2.业务逻辑中的开发用注解,如service中@Autowire
3.Spring3.X开始提供了Java配置方式,可以通过Java代码配置
4.Spring4.X推荐使用Java配置方式
Java配置
Java配置是Spring4.x推荐的配置方式,可以完全替代xml配置
1.核心注解
@Configuration
作用于类上,标记该类是一个配置类,相当于以前的xml配置文件
@Bean
作用于方法上,相当于xml中的,将方法的返回值交由spring容器管理
springboot核心
入口类
@SpringBootApplication注解
Spring Boot的核心注解,是一个复合注解,包含@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan三个注解
@SpringBootApplication的属性
scanBasePackages:指定扫描包,通常不指定
exclude:指定不扫描的包,通常不指定
@SpringBootConfiguration
后缀是Configuration,没错,这个注解继承了@Configuration,配置注解
@EnableAutoConfiguration
开启自动配置,该注解会使Spring Boot根据项目中依赖的jar包自动配置所需要的配置项
如:我们添加了spring-boot-starter-web的依赖,项目中也就会引入SpringMVC的依赖,Spring Boot就会自动配置tomcat和SpringMVC
@ComponentScan
容器扫描自动装配,默认扫描该注解所在类的同级目录及子目录,因此通常把启动类放在项目根目录下
可以通过basePackages属性配置扫描的目标包,但通常不会这么做
可以通过excludeFilters属性配置不扫描的包
配置文件
spring配置文件为yml或者properties,通常使用yml
全局配置文件
springboot全局配置文件可以是application.yml或application.properties,默认放在resources目录下,通常是application.yml
相比以往的配置方式,采用树形结构,更符合编码习惯,有上千个配置可供选择
我们不在此处讨论框架的配置,只讨论自定义值的配置
自定义配置值
格式
缩进+冒号后空格
普通值,如数字,字符串,布尔
name: zhangsan
注意:
字符串默认不用加上单引号或者双引号
使用双引号需要考虑转义,单引号不需要考虑转义
"zs\n ls" zs换行ls
'zs\nls' zs\nls
对象/map类型,即有键值对
key:
key: value
key: value
或者 key:{key: value,key: value}
Person:
name: zhangsan
age: 20
数组,List,Set
key:
- value
- value
或者key: [value,value]
注意:
用 - 值表示数组中的一个元素
PersonList:
- zhangsan
- lisi
嵌套
student:
-name: zhangsan
age: 18
-name: lisi
age: 17
或者:student: [{name: zhangsan,age: 18},{name: lisi,age: 17}]
读取指定配置文件配置的值
某些时候,我们有可能针对某个类必须要用到单独的配置文件,把配置的值注入到Bean中,此时可以使用@PropertySource+@Value
@PropertySource(value={"classpath:jdbc.properties"})+@Value
1.作用在类上,在该类的范围内,读取指定位置的配置文件
2.springboot默认只会加载application.yml/application.properties
3.配置可以为多个,用逗号隔开
value={"classpath:jdbc.properties","xxx","xxx"}
4.配置文件有可能找不到,设置ignoreResourceNotFound=true,允许配置文件缺失
@PropertySource(value={"classpath:jdbc.properties"}, ignoreResourceNotFound=true)
@Value("${jdbc.url}"),作用在变量上,获取配置项的值给定变量
@PropertySource(value={"jdbc.properties"}, ignoreNotFound=true)
@Value("${jdbc.url}")
private String jdbcUrl;
@Value("${jdbc.driverClassName}")
private String jdbcDriverClassName;
@Value("${jdbc.username}")
private String jdbcUsername;
@Value("${jdbc.password}")
private String jdbcPassword;
@ConfigurationProperties(perfix="persion")
用来简化@PropertySource+@Value
通常作用在配置类上,表示属性自动装配,perfix前缀+该类的属性名,去配置文件中找对应的配置值装配到对应的属性上
注意:
前缀的单个单词首字母不能大写
如果该类的变量上同时使用了@Value,以ConfigurationProperties为准
使用对象中的数据,要在具体的方法中使用,而不能在类中直接使用,涉及依赖注入的顺序
login
username: zhangsan
password: 123456
@Configuration
public class loginConfig {
private String username;
private String password;
}
@ImportResource(classpath:xxxx.xml)
由于springboot只会加载yml和properties,当某个类下必须读取xml配置,就要使用@ImportResource注解
如果在启动类上使用,就可以读取原本的applicationContext.xml作为项目启动的配置文件
通常不会这么做
@Import 导入额外的配置信息
功能和xml的import一致,其实就是将配置分类,通过不同的配置文件进行配置
pom启动器依赖包
SpringBoot提供了绝大多数开发场景的starter pom,只要导入就能通过自动配置消除繁琐的配置