在之前SSM整合中,介绍了spring整合springmvc、mybatis的过程,可以看出整合过程极其麻烦。
1.Spring优缺点分析
优点:
Spring为企业级Java开发提供了一种相对简单的方法,通过IOC和AOP,用简单的Java对象(POJO)实现之前只有EJB才能完成的事情。
缺点:
虽然Spring的组件代码是轻量级的,但它在开发时整合的配置却是重量级的,比如:
- 在管理整个项目依赖时,总是会发生jar包的版本冲突问题。
- 项目添加一个框架或者技术时,需要导入的maven依赖太多。
- 项目添加一个框架或者技术时,需要一个对应的xml配置文件。
2.SpringBoot
SpringBoot对上述Spring的缺点进行的改善和优化,基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换。
版本锁定
在spring-boot-dependencies-2.2.2.RELEASE.pom中可以看到
- 这里指定了maven依赖版本,集合了常用的并且测试过的所有版本,成功解决依赖冲突
起步依赖
spring官网中,提供了大量环境的起步依赖坐标:
- 解决了完成某一个功能要整合的jar包过多的问题,集合了某个功能锁常用的jar包,例如
spring-boot-starter-web
,它帮我们整合springMVC、Tomcat等
自动配置
- 解决了整合框架或者技术的配置文件过多,集合了所有的约定的默认配置。springboot是基于约定的,开发人员约定好很多配置都有默认值。比如说:tomcat默认端口 8080、redis 默认端口6379 、session 的过期默认时间为30m等等
内置Tomcat
- 通过内置的tomcat,无需再用其他外置的Tomcat就直接可以运行javaEE程序
2.Springboot的配置文件
SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,可以通过在resources下创建文件
通常使用YAML语言来写配置文件,非常简洁和强大,远比 xml、properties 格式方便。
但需要严格按照规范属性:
YAML数据格式:
# 基本类型,username 和 name 属性比较特殊,不要使用
nickname: lucy
# 对象类型,yml中也支持spel表达式
user:
username: ${nickname}
age: 18
# 集合类型
addressList:
- '北京'
- '上海'
- '广州'
3.读取配置文件
@Value
此注解是Spring框架提供的,用来读取配置文件中的属性值并逐个注入到Bean对象的对应属性中。
Environment
此对象是Spring框架提供的,用来表示整个应用运行时的环境,可以读取配置文件中的属性值并逐个注入到Bean对象的对应属性中。
@ConfigurationProperties【常用】
此注解是Spring Boot框架提供的,用来快速、方便地将配置文件中的自定义属性值批量注入
到某个Bean对象的多个对应属性中。
过程中出现注解警告解决方案: