标题:SpringBoot2学习第一天—基础入门
学习内容:
1、SpringBoot的相关概述
2、快速创建一个SpringBoot项目
3、SpringBoot的依赖管理和自动配置
4、容器功能注解
5、最佳实战模板
内容详情:
1、SpringBoot的相关概述
Spring的生态
web开发
数据访问
安全控制
分布式
消息服务
移动开发
批处理
…
Spring5重大升级
响应式编程
内部源码设计
为什么用SpringBoot
能快速创建出生产级别的Spring应用
SpringBoot优点
创建独立Spring应用
内嵌web服务器
自动starter依赖,简化构建配置
自动配置Spring以及第三方功能
提供生产级别的监控、健康检查及外部化配置
无代码生成、无需编写XML
SpringBoot是整合Spring技术栈的一站式框架
SpringBoot是简化Spring技术栈的快速开发脚手架
SpringBoot缺点
人称版本帝,迭代快,需要时刻关注变化
封装太深,内部原理复杂,不容易精通
2、 快速创建一个SpringBoot项目
创建好后创建一个HelloController类简单感受一下Springboot的简单。
@RestController
public class HelloController {
@RequestMapping("/hello")
public String handle01(){
return "Hello, Spring Boot 2!";
}
}
运行main方法,在浏览器里http://localhost:8080/hello
端口号默认8080,也可以在application.properties里面改端口号
3、SpringBoot的依赖管理和自动配置
依赖管理
开发导入starter场景启动器
见到很多 spring-boot-starter-* : *就某种场景
只要引入starter,这个场景的所有常规需要的依赖我们都自动引入
见到的 *-spring-boot-starter: 第三方为我们提供的简化开发的场景启动器。
无需关注版本号,自动版本仲裁
引入依赖默认都可以不写版本
引入非版本仲裁的jar,要写版本号。
可以修改默认版本号
查看spring-boot-dependencies里面规定当前依赖的版本用的 key。 在当前项目里面重写配置
<&properties>
<mysql.version>5.1.43</mysql.version>
<&/properties>
$符号是没有的,我写这个是为了显示这个标签
自动配置
自动配好Tomcat
引入Tomcat依赖
配置Tomcat
自动配好SpringMVC
引入SpringMVC全套组件
自动配好SpringMVC常用组件(功能)
自动配好Web常见功能,如:字符编码问题
SpringBoot帮我们配置好了所有web开发的常见场景
默认的包结构
主程序所在包及其下面的所有子包里面的组件都会被默认扫描进来
无需以前的包扫描配置
想要改变扫描路径
@SpringBootApplication(scanBasePackages=“com.atguigu”)
或者@ComponentScan 指定扫描路径
@SpringBootApplication
等同于
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan("com.atguigu.boot")
各种配置拥有默认值
默认配置最终都是映射到某个类上,如:MultipartProperties
配置文件的值最终会绑定每个类上,这个类会在容器中创建对象
按需加载所有自动配置项
非常多的starter
引入了哪些场景这个场景的自动配置才会开启
SpringBoot所有的自动配置功能都在spring-boot-autoconfigure包里面
…
4、容器功能注解
基于注解驱动开发里面再详细描述。
@Configuration
告诉SpringBoot这是一个配置类 == 配置文件
proxyBeanMethods:代理bean的方法
Full(proxyBeanMethods = true)【保证每个@Bean方法被调用多少次返回的组件都是单实例的】
Lite(proxyBeanMethods = false)【每个@Bean方法被调用多少次返回的组件都是新创建的】
组件依赖必须使用Full模式。
例如:@Configuration(proxyBeanMethods = false),默认是true
@Bean、@Component、@Controller、@Service、@Repository
@ComponentScan
指定扫描哪些,Spring注解;
@Import({User.class, DBHelper.class})
给容器中自动创建出这两个类型的组件、默认组件的名字就是全类名
@Conditional
条件装配:满足Conditional指定的条件,则进行组件注入
@ImportResource
原生配置文件引入
只有在容器中的组件,才会拥有SpringBoot提供的强大功能
@ConfigurationProperties
配置绑定
@Component + @ConfigurationProperties 先加入到容器,再配置绑定properties文件
例如:@ConfigurationProperties(prefix = “mycar”)
@EnableConfigurationProperties
在配置类上面写
@EnableConfigurationProperties(Car.class)
开启Car配置绑定功能
把这个Car这个组件自动注册到容器中
@EnableConfigurationProperties + @ConfigurationProperties==@Component + @ConfigurationProperties
如果组件不能通过@Component添加,就可以使用这个
5、最佳实战模板
1.引入场景依赖
2.查看自动配置了哪些(附加,可以跳过)
自己分析,引入场景对应的自动配置一般都生效了
配置文件中写debug=true开启自动配置报告。
3.是否需要修改
自己分析。xxxxProperties绑定了配置文件的哪些。
自定义加入或者替换组件 @Bean、@Component。。。
自定义器 XXXXXCustomizer;
…
补充:
dev-tools、
项目更改编译(ctrl+F9)就行了,不需要重启
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>