Spring Boot简介
Spring Boot用于简化Spring应用开发,基于约定大于配置的思想。使用Spring Boot可以更容易创建一个独立运行、生产环境的Spring应用。Spring Boot应用只需要非常少的Spring配置。
Spring Boot优点
1.快速创建独立运行的Spring应用以及与主流的框架集成。
2.使用嵌入式的Servlet容器,应用无需打成war包。
2.starters自动依赖及版本控制。
4.大量的自动配置,简化开发,也可修改默认配置。
5.无需配置XML,无代码生成,开箱即用。
6.准生产环境的运行时应用监控。
7.与云计算的天然集成。
Spring Boot实例
1.利用idea的spring初始化器创建maven工程。
Application类是整个springboot应用的主启动的类。
package com.fengxunxinxi.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
主启动类中有一个主函数,运行改主函数便可启动springboot应用。
2.编写controller、service
在com.fengxunxinxi.springboot.controller下编写一个处理器。
package com.fengxunxinxi.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class HelloController {
@ResponseBody
@RequestMapping(value = "/hello")
public String hello(){
return "Hello World";
}
}
3.启动应用
运行主启动类的主函数。
4.测试
在浏览器输入localhost:8080/hello访问服务。
5.打包引用
在pom.xml中初始化器将打包插件已导入应用。
<!--这个插件可以将应用打包成一个可执行的jar包-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
点击idea右边栏的Maven Project。
运行生命周期内的package。
打包完成后,jar包位于项目的target目录中,jar包名为spring-boot-0.0.1-SHAPSHOT.jar。
运用java -jar命令可以运行jar包。
java -jar spring-boot-0.0.1-SNAPSHOT.jar
POM.XML解析
1.父项目
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
该父项目依赖于以下项目
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.9.RELEASE</version>
<relativePath>../../spring-boot-dependencies</relativePath>
</parent>
在spring-boot-dependencies中有个properties属性,在这个属性中定义了相关依赖的版本。
spring-boot-dependencies可以成为springboot的版本仲裁中心。
2.web场景依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
spring-boot-starter:spring-boot场景启动器;spring-boot-starter-web帮助我们导入了web模块正常运行所依赖的组件。
Spring Boot将所有的功能场景都抽取出来。做成一个个Starter(场景启动器)。只需在项目中引入相关starter,就可把相关场景的所有依赖全部导入。
主启动类解析
1.@SpringBootApplication注解
该注解表明该应用是一个spring-boot应用。所标明的类为主配置类。可以使用该类的main()方法启动spring-boot应用。@SpringBootApplication注解是一个组合注解,由多个注解组成。
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
)
@SpringBootConfiguration:Spring Boot配置类;该注解标注的类表示为Spring Boot的配置类。
@SpringBootConfiguration也是多个注解的组合。
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
@Configuration:配置类标注该注解。配置类是对配置文件的取代。配置类也是容器中的一个组件。
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
2.@EnableAutoConfiguration注解
该注解表明开启自动配置功能,Spring Boot帮助完成自动配置。
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@AutoConfigurationPackage
@Import({AutoConfigurationImportSelector.class})
@EnableAutoConfiguration包含一个@AutoConfigurationPackage注解。
@AutoConfigurationPackage:自动配置包。
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Import({Registrar.class})
@Import是Spring底层注解,负责给容器中导入一个组件。导入的组件由Registrar.class决定。
Registrar.class类中包含一个registerBeanDefinitions()方法
对(new AutoConfigurationPackages.PackageImport(metadata)).getPackageName()进行计算;
得到的是主启动类(@SpringBootApplication注解标注的类)所在包的包名。其主要作用是将主启动类所在包及其子包中的所有组件加入到Spring容器中。
@EnableAutoConfiguration包含一个@Import({AutoConfigurationImportSelector.class})
在AutoConfigurationImportSelector.class中包含一个selectImports()方法,该方法主要用于选择那些组件需要导入。将所有需要导入的组件以全类名返回,相关组件就会加入到容器中。
Spring boot启动的时候从类路径下的META-INF/spring.factorities中获取EnableAutoConfiguration指定的值,将这些值作为自动配置类加入到容器中,自动配置就生效了。