概述
SpringBoot是整合Spring技术栈的一站式框架。SpringBoot是简化Spring技术栈的快速开发脚手架。
优点
- 创建独立Spring应用
- 内嵌web服务器
- 自动starter依赖,简化构建配置
- 自动配置Spring以及第三方功能
- 提供生产级别的监控、健康检查及外部化配置
- 无代码生成、无需编写XML
入门
@RestController注解包含@ResponseBody和@Controller注解。
在导入spring-boot-maven-plugin
遇到Plugin 'org.springframework.boot:spring-boot-maven-plugin:' not found
的错误时,可以通过添加版本号解决,添加版本号是很多找不到文件时解决方案。
SpringBoot不必打包成war包,打包成jar包即可,只需导入spring-boot-maven-plugin
,springboot会将所需的依赖一同打包入jar包。使用Maven的Lifecycle中package打包即可。
@SpringBootApplication注解指明启动程序,只需执行main方法即可启动项目。
@SpringBootApplication
public class MainApplication {
public static void main(String[] args) {
SpringApplication.run(MainApplication.class,args);
}
}
自动配置原理
父项目做依赖管理,里面指定了很多依赖的版本号。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.4.RELEASE</version>
</parent>
starter场景启动器:spring-boot-starter-*
是官方的,而*-spring-boot-starter
是第三方。
springboot为我们自动配好Tomcat、自动配好SpringMVC、自动配好Web常见功能,如:字符编码问题、默认的包结构、各种配置拥有默认值、按需加载所有自动配置项。
主程序所在包及其下面的子包都会被默认进行组件扫描。
配置类里面使用@Bean标注在方法上给容器注册组件,默认也是单实例的。
配置类本身也是组件,可以通过getBean
方法获取。
常用注解
@Configuration中的属性proxyBeanMethods的值默认为true,是新特性,用于代理bean的方法。true的时候保证获取的对象是单实例的,false则会保留代理对象,可以获取新的对象。启用代理,就是先创建bean,每次用的时候直接拿。如果类组件之间没有依赖关系则使用false,若有则使用true。
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan("com.atguigu.boot")
public class MainApplication {
public static void main(String[] args) {
ConfigurableApplicationContext run = SpringApplication.run(MainApplication.class, args);
Pet tom01 = run.getBean("tom", Pet.class);
Pet tom02 = run.getBean("tom", Pet.class);
System.out.println("组件:"+(tom01 == tom02));//在true模式下,两者是相同的
//配置类本身也是组件
MyConfig bean = run.getBean(MyConfig.class);
System.out.println(bean);
//如果@Configuration(proxyBeanMethods = true)代理对象调用方法。SpringBoot总会检查这个组件是否在容器中有。
//保持组件单实例,使用配置类调用bean
User user = bean.user01();
User user1 = bean.user01();
System.out.println(user == user1);
}
}
@Import注解给容器中使用无参构造创建出填入类型的组件:@Import({User.class, DBHelper.class})
。
@Conditional注解实现条件装配,若满足Conditional指定的条件,则进行组件注入:@ConditionalOnMissingBean(name = "tom")。
@ImportResource注解用于将xml的组件导入的配置类中:@ImportResource("classpath:beans.xml")。
配置绑定
@ConfigurationProperties读取properties文件中的内容,并将其封装到JavaBean中,只需填写前缀接口,属性会自动对应类中的属性。
@Component
@ConfigurationProperties(prefix="mycar")
public class Car{
......
}
在配置类中使用@EnableConfigurationProperties(Car.class)注解开启Car属性配绑定功能并将Car组件自动注册到容器中,这样可以少写@Component注解。
自动配置原理
- 引导加载自动配置类。
- 按需开启自动配置项。
- 修改默认配置,以用户配置的优先。
开发步骤
- 引入场景依赖
- 查看哪些部分进行了自动化配置,在application.propreties中添加
debug=true
可以查看。 - 配置是否需要修改,参照文档修改配置项,自定义加入或替换组件。
开发工具
- lombok
- devtools,
ctrl+F9
更新。 - Spring Initializr。
开发
yaml中字符串无需加引号,如果要加,''与""表示字符串内容 会被 转义/不转义。
欢迎页面有两种方式:1、静态资源下index.html;2、Controller能够处理/index请求。
只需将图片命名为favicon.ico即可作为网站的图标。
Rest风格如果使用客户端工具,如PostMan直接发送Put、Delete方式请求,无需使用Filter。
静态资源访问
只要静态资源放在类(resources)路径下:/static
或/public
或 /resources
或 /META-INF/resources
,就可以通过当前项目根路径/ + 静态资源名访问。
原来是静态映射/**
,请求进来优先找Controller是否能处理,不能处理的所有请求都交给静态资源猫处理器。
静态资源访问默认无前缀,可以通过static-path-pattern
修改前缀。
常用注解
矩阵变量写法:/cars/sell;low=34;brand=byd,audi,yd
。
注解 | 作用 |
---|---|
@PathVariable | 路径变量 |
@RequestHeader | 获取请求头 |
@RequestParam | 获取请求参数 |
@CookieValue | 获取cookie值 |
@RequestBody | 获取请求体[POST] |
@RequestAttribute | 获取request域属性 |
@MatrixVariable | 矩阵变量 |
- SpringBoot2 SpringBootspringboot2 springboot2 springboot springboot2 springboot swagger3 swagger springboot2 springboot mybatis springboot2 springboot lettuce redis springboot2 springboot spring3 spring springboot2 springboot后台 管理系统 springboot2 springcache springboot springboot2 springboot mybatis3 mybatis connectionimpl springboot2 springboot connection