什么是SpringBoot
Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用我的话来理解,就是 Spring Boot 其实不是什么新的框架,它默认配置了很多框架的使用方式,就像 Maven 整合了所有的 Jar 包,Spring Boot 整合了所有的框架。
SpringBoot的优点
快速创建独立运行的spring项目以及与主流框架集成
使用嵌入式Servlet的容器,应用无需打成WAR包
starters自动依赖与版本控制
大量的自动配置,简化开发,也可以修改默认值
无需配置XML,无代码生成,开箱即用。
准生产环境的运行时应用监控
与云计算的天然集成
HELLO WORLD
1、 创建maven项目
2、 在POM.xml引入starters
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.blh</groupId>
<artifactId>spring-boot-01-helloworld</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<!-- 这个插件,可以将应用打包成一个可执行的jar包;-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3、 创建主程序
package com.blh;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//标注一个主程序,说明这是一个springboot应用
@SpringBootApplication
public class HelloWorldMainApplication {
public static void main(String[] args) {
//spring应用启动起来
SpringApplication.run(HelloWorldMainApplication.class);
}
}
4、 编写控制层代码
package com.blh.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("/hello")
public String hello() {
return "hello,world!";
}
}
5、 启动运行
在这我们只需要直接运行主程序即可,然后直接在地址栏输入localhost:8080/+请求路径
@SpringBootApplication:标注一个主程序,说明这是一个springboot应用
@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:SpringBoot的配置类
标注在某个类上,表示这是个springboot的配置类
@Configuration:配置类上来标注这个注解
配置类------ 配置文件;配置类也是容器中的一个组件:Component
@EnableAutoConfiguration:开启自动配置功能
以前需要配置的东西,springboot帮我们自动配置。
@AutoConfigurationPackage:自动配置包
@Import(AutoConfigurationPackages.Registrar.class)
Spring的底层注解@Import,给容器中导入一个组件
将主配置类(@SpringBootApplication标注的类)的所有的包下面所有的子包里面的所有组件扫描到SPring容器中
@Import(EnableAutoConfigurationImportSelector.class)
给容器中导入组件
EnableAutoConfigurationImportSelector:导入那些组件的选择器;
将所有需要导入的组件以全类名的方式返回;这些组件就会被添加到容器中
会给容器中导入非常多的自动装配类(XXXAutoConfiguration),就是给容器中导入所有这个场景需要的所有组件
并配置好组件
有了这些自动配置类,我们就不需要手动编写配置注入功能组件等工作。
SpringFactoriesLoader.loadFactoryNames(
EnableAutoConfiguration.class, beanClassLoader)
springboot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值
将这些值作为自动转配类导入到容器中,自动装配类就会生效,帮我们进行自动配置工作。以前我们需要自动配置的东西,都交给了自动
配配置