初步认识SpringBoot
# 什么是SpringBoot
# 1 starter
- Spring Web -- spring-boot-starter-web
springboot中的starter是什么
# 它是什么
starter = 依赖 + 配置
每个SpringBoot项目中,都引入了多个starter,这些starter就是类似jars的东西,但是它不等同于jars,而是某个开发环境所需要的全部jars,以及对应的配置。或者说stater,它是一个开发场景的支持,比如我们引入web-starter就可以进行web应用的开发,在引用mybatis对应的stater就可以使用mybatis。
这也是SpringBoot的优势之一,提供了简化的企业级开发方式
贴图位置
# Java配置方式
starter中包含的配置都是通过Java类实现的——Java配置方式。
@Configuration
public class SpringConfig{
@Bean
public Date getDate(){
return new Date();
}
}
//@Bean 相当于 spring中xml配置文件中的<bean>标签,
//方法名作为组件的id,返回类型就是组件的类型,返回值就是组件在容器中的示例
2
3
4
5
6
7
8
9
10
通过注解告诉程序这是配置文件,从而达到“类文件即为配置的目的”
这种方式相较于 @Controller、@Service 之类的直接注入的优势是:
- 不仅可以将自定义类注入,还能将三方引用包中的类,也当成bean实现注入(自定义类直接用上述的注解注入即可)
关于配置的注解还有很多,这里不一一列举
# starter依赖的jar冲突问题
内容
# 有些starter没有指定版本
因为:当前的starter集成了另外的一个starter,而另外一个starter指定了版本
基于spring官方创建的SpringBoot项目,继承spring-boot-starter-parent.pom,而它又继承spring-boot-dependencies.pom————在这个文件中它指定了很多starter的默认版本,因此某些starter不用指定版本也可以。
使用阿里远程服务器创建的springboot,pom文件则无这种继承关系(最终继承于spring-boot-dependencies.pom),因此版本需要在当前pom文件中指定(version、或在properties中指定)
简单来说就是:父starter指定了版本,因此子starter不用指定,当然如果子starter指定的版本(重写了),跟父不一样,使用子starter的版本。
pom示例
温馨提示:使用阿里远程服务器创建的SpringBoot项目,会有一些已经写好的配置文件,你只需改变参数即可,比如数据库连接、mybatis-mapper文件位置等
# 2 自动配置过程
内容待补充
# 3 全局配置文件
- springboot提供了一个全局配置文件application.properties用于进行自定义配置
- 某些starter的自动配置类需要相关的属性配置,引入之后不用配置也可启动,因为springboot提供了默认配置
- springboot 全局配置文件支持yaml语法、properties键值对配置语法
当然,如果默认配置不满足开发需求,你也可以重写这部分配置,最终结果也会以重写的配置为准
# 多环境的配置文件的支持
全局配置文件(application-{profile}.properties/yml)也叫做主配置文件,在编写它的时候,我们可以使用配置来——指定不同的环境使用不同的配置文件
#比如在配置文件中指定使用dev环境,我们可以通过设置不同的端口号进行测试;
#我们启动SpringBoot,就可以看到已经切换到dev下的配置了;
spring.profiles.active=dev
2
3
例如:
- application-test.properties 代表测试环境配置
- application-dev.properties 代表开发环境配置
如果没有进行环境的指定,则SpringBoot它默认使用application.properties主配置(或者application.yml),且该默认配置任何时候都会加载,不管是否指定配置环境(换句话说,即使指定active为dev,仍会加载默认配置)
如果存在同名的配置项,明确指定环境的配置优先
# 指定环境的方式
上述说的是通过配置的方式进行指定,但在开发中我们还可以通过命令行的方式进行指定:
java -jar xxx-xx-xx.jar --spring.profiles.active=test
如此,即使在打包时,配置文件指定的环境为dev
,在运行时,仍会以test
环境运行
通过在命令行中设置环境变量,可以快速切换不同的配置环境,而无需修改代码或重新编译。这对于在开发、测试和生产环境中使用不同的配置非常有用。
# 配置文件加载的位置
外部加载配置文件的方式十分多,我们选择最常用的即可,在开发的资源文件中进行配置!
springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件:
优先级1:项目路径下的config文件夹配置文件
优先级2:项目路径下配置文件
优先级3:资源路径下的config文件夹配置文件
优先级4:资源路径下配置文件
2
3
4
优先级由高到底,高优先级的配置会覆盖低优先级的配置;
SpringBoot会从这四个位置全部加载主配置文件;互补配置;