- 设置maven
先检查jdk和maven是否安装
cmd输入java -version和mvn -v查看自己安装的版本信息。
在maven的bin文件下找到settings.xml文件在 中添加
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
- ieda设置
IDEA需要把我们的Maven整合进来
应用到自己的maven仓库 把两个override都点√应用 - 创建Maven项目
POM文件:
- 父项目
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
它的父项目:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
真正管理springboot里面的所有依赖版本
spring-boot-dependencies:核心依赖在父工程里
我们在写或者导入一些SpringBoot依赖的时候,不需要指定版本,因为有这些版本仓库。
2. 导入的依赖:
spring-boot-starter:spring-boot场景启动器;比如spring-boot-starter-web他就帮我们导入了web模块正常运行所依赖的组件。
springboot将所有功能场景都抽取出来,做成一个个的starters(启动器),只需要在项目里面引入这些starter相关场景的所有的依赖都导入进来。使用哪个场景就配置哪个启动器。
- 自动配置原理:(注解底层是反射)
入口类标注@SpringBootApplaction,说明和这个类是SpringBoot的主配置类,目的就是使启动类下的所有资源被导入;
@SpringBootConfiguartion(springboot配置的注解):SpringBoot的配置类;
@Configuration(spring配置的注解):配置类上来标注这个注解;配置类------配置文件;配置类也是容器中的一个组件;@Component标志这也是一个组件
@EnableAutoConfiguartion:开启自动配置功能,这样自动配置才能生效;
@AutoConfigurationPackage:自动配置包
@import(AutoConfigurationPackages.Registrar.class):导入选择包,自动配置包注册,是spring的底层注解,给容器中导入一个组件;导入的组件由AutoConfigurationPackages.Registrar.class;
将主配置类(@SpringBootApplaction标注的类)的所在包及下面所有子包里面的所有组件扫描到Spring容器;
自动配置的核心文件:META-INF/spring.factories
SpringBoot从类路径下的META-INF/spring.factories中获取EnableAutoConfgiguration指定的值,将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置的工作;
SpringBoot所有自动配置都是在启动的时候扫描并加载,spring.factories所有的自动配置都在这里面,但是不一定生效,要判断条件是否成立,只要导入了对应的start,就有了对应的启动器了,有了启动器,我们自动装配就会生效,然后就配置成功了。