Spring-boot讲解

一、配置优先级(低到高)

1.application.yaml(忽略)

2.application.yml

3.application.properties

4.java系统属性(-Dxxx=xxx)

5.命令行参数(--xxx=xxx)

二.Bean管理

1.作用域

(1)singleton:容器内同 名称 的 bean 只有一个实例(单例)(默认)

prototype:每次使用该 bean 时会创建新的实例(非单例)

request:每个请求范围内会创建新的实例(web环境中,了解)

session:每个会话范围内会创建新的实例(web环境中,了解)

application:每个应用范围内会创建新的实例(web环境中,了解)

注意:Spring支持五种作用域,后三种在web环境才生效。

(2)如何设置bean的作用域?

@Scope("singleton")

(3).如果从Spring容器中获取bean对象?

注入ApplicationContext;

调用getBean方法从Spring容器中获取bean对象;

2.第三方Bean

1.@Component

2.@Controller

3.@Service

4.@Repository

注意:什么时候使用@Component声明bean,什么时候使用@Bean注解?

一般如果是项目中自定义的类,使用@Component及其衍生注解;

如果是引入第三方依赖中的类,使用@Bean注解;

三。SpringBoot原理

起步依赖

自动化配置原理

1、一个注解

启动类上 SpringBootApplication 注解,它是一个复合注解,内部有三个注解组成

1.SpringBootConfiguration,底层是一个Configuration,表示启动类也是一个配置类,可以在内部定义相关Bean

2.ComponentScan,表示组件扫描,默认会扫描启动类包及子包下Spring能识别的组件

3.EnableAutoConfiguration,底层是一个Import注解,该注解中导入 AutoConfigurationImportSelector类,该类中有一个 selectImports 方法会被调用,该方法最终会去加载 META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports文件中的内容,并筛选满足starter和各种Condtional条件的全类名,封装成一个字符串数组加载到内存中

2、一个方法

启动类会通过run方法去创建与初始化Spring容器,在初始化时会把上面注解加载到内存中的字符串数组对应的内容,创建成对象注入到Spring容器,至此就完成了自动化装配

四:自定义starter

场景:在实际开发中,经常会定义一些公共组件,提供给各个项目团队使用。而在SpringBoot的项目中,一般会将这些公共组件封装为SpringBoot 的 starter(包含了起步依赖和自动配置的功能)。

需求:自定义aliyun-oss-spring-boot-starter,完成阿里云OSS操作工具类 AliyunOSSUtils 的自动配置。

目标:引入起步依赖引入之后,要想使用阿里云OSS,注入 AliyunOSSUtils直接使用即可。

步骤:

1.创建aliyun-oss-spring-boot-starter模块

2.创建aliyun-oss-spring-boot-autoconfigure模块,在starter中引入该模块

3.在aliyun-oss-spring-boot-autoconfigure模块中的定义自动配置功能,并定义自动配置文件 META-INF/spring/xxxx.imports

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值