SpringBoot 的特点:
- 创建应用打包的方式是jar 包而不是war 包
- 内嵌servlet 容器,通过appplication.properties 文件配置tomcat 具体的端口信息
- 整合其他的框架是只需要加入相应的依赖就行,不需要在项目的配置文件中添加
- 提供了许多开箱即用的插件,简化了maven 的配置,只需要添加maven 的依赖就行
- 自动配置spring 提高代码的效率
- 无需任何xml配置,springboot 框架只有一个application.properties 配置文件,没有其他需要配置的xml 文件
使用的前提(版本的要求):
springBoot 1.1.6RELEASE java 7以上
启动程序详解:
目录结构:
- application.properties 为spring Boot应用的属性文件,可以修改spring boot的一些默认设置
- static:用于存放静态资源(image,CSS文件,js 文件等)
- temptelates :存放web 页面模板,spring boot默认的jar 报使用嵌入式的tomcat ,默认不支持jsp 页面;但是可以使用模板引擎(free marker ,thyme leaf)
application.properties 文件
- 是Spring Boot的属性配置文件,可以在里面对Spring Boot服务的端口进行调整。或者修改tomcat 的端口
启动程序代码
package com.example.demo;
import.....
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
@SpringBootApplication : 是springBoot 的核心注解。开始扫描组件和自动配置,Spring boot通过运行这个类的main 方法来启动Spring Boot程序
SpeingBootApplication 是一个复合注解:
@SpringBootConfiguration
: 表示被标注的是Spring Boot的配置类;
标注在某个类上,表示这是一个Spring Boot的配置类;
向下:@Configuration**:配置类上来标注这个注解【spring 底层注解】
配置类 ----- 配置文件;配置类也是容器中的一个组件;@Component【spring 底层注解】EnableAutoConfiguration
:开启自动配置功能;>
以前我们需要配置的东西,Spring Boot帮我们自动配置;@EnableAutoConfiguration告诉SpringBoot开启自动配置功能;这样自动配置才能生效;
(1.) 向下:@AutoConfigurationPackage:自动配置包
向下:@Import(AutoConfigurationPackages.Registrar.class):Spring的底层注解@Import,给容器中导入一个组件;导入的组件由AutoConfigurationPackages.Registrar.class;
将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件扫描到Spring容器;
(2.) @EnableAutoConguration下还有一个注解:
@Import(EnableAutoConfigurationImportSelector.class);
给容器中导入组件?
EnableAutoConfigurationImportSelector:导入哪些组件的选择器;
将所有需要导入的组件以全类名的方式返回;这些组件就会被添加到容器中;
会给容器中导入非常多的自动配置类(xxxAutoConfiguration);就是给容器中导入这个场景需要的>所有组件,并配置好这些组件,有了自动配置类:
Spring Boot在启动的时候从类路径下的META-INF/spring.factories中获EnableAutoConfiguration指定的值,将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置工作; 以前我们需要自己配置的东西,自动配置类都帮我们;
J2EE的整体整合解决方案和自动配置都在spring-boot-autoconfigure-1.5.9.RELEASE.jar;
pom.xml 配置文件:
- 导入父依赖,这是所有的SpringBoot 的依赖,提供了一些默认设置,对所有依赖的版本进行统一的管理(版本仲裁者),所以导入的依赖不用写版本号,但是一些不在父依赖中管理的还是要写
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
web 项目所以要导入web 场景启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
虽然springboot项目建立的时候就在idea 中配置过maven,还是要导入maven 插件表明springboot使用maven的方式进行项目的构建和管理 【能够以Maven的方式为应用提供Spring Boot的支持,即为Spring Boot应用提供了执行Maven操作的可能。】
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>