SpringBoot原理

SpringBoot配置

SpringBoot 除了支持配置文件属性配置,还支持Java系统属性命令行参数的方式进行属性配置。

Java系统属性

-Dserver.port=9000

命令行参数

--server.port=10010

优先级(低~高)

Application.yaml(忽略)

Application.yml

Application.properties

Java系统属性(-Dxxx=xxx)

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

获取bean

在IOC启动的时候才获取的bean对象

根据name获取bean: Object getBean(String name)

根据类型获取bean: <T> T getBean(Class<T> requiredType)

根据name 获取bean(带类型转换): <T> T getBean(String name,Class<T> requiredType)

Bean的作用域

String支持五种作用域,后三种在Web环境下生效:

作用域

Singletion 容器内同名称的bean只有一个实列(单列)(默认)

Prototype 每次使用该bean时会创建新的实列(非单列)

Request   每个请求范围内会创建新的实列(Web环境中,了解)

Session 每个会话范围内会创建新的实列(Web环境中,了解)

Application 每个应用范围内会创建新的实列(Web环境中,了解)

Bean的作用域

通过@Scope注解来进行配置作用域

注意事项:

默认singleton的bean,就是在容器启动的时候被创建,可以使用@Lazy注解来延迟初始化(延迟到一次使用的时候).

Prototype的bean,每一次使用该bean的时候都会创建一次对象(实列)

实际开发当中,绝大部分的Bean是单列的,也就是说大部分的Bean是不需要配置scope属性.

如果是第三方@Bean来管理对象的话(不是自定义),是无法使用@Component衍生注解声明bean的,因此就需要@Bean注解.

@Bean 将方法下的返回值交给IOC容器管理,成为IOC容器的bean对象

如果要定义第三方的@Bean对象的话,对这些bean集中分类配置,可以通过@Configuration注解声明一个配置类

通过@Bean注解的name/value的属性去指定bean名称,如果没有指定,就会默认方法名

通过@Bean注解下的方法指定找到bean

@Component及衍生注解与@Bean注解使用场景?

如果是我们自己定义一个类来使用的话就需要@Component

如果是在项目引入第三方的,而且还想交个IOC引用的那么就是需要使用@Bean注解

自动配置

SpringBoot自动配置就是启动Spring容器启动之后,一些配置类、beande 对象就会自动的存入Ioc容器中,不需要手动,从而简化开发效率。

@ComponentSan组件指定的包名进行扫描所有的bean

@Import导入。使用@Import导入的类会被String加载到容器中,导入的形式有以下几种:

导入 普通类、配置类

导入 ImportSelector接口实现类

@EnableXxxx注解,封装@Import注解

@SpringBootApplication

该注解标识在SpringBoot工程引导类上,是SpringBoot中最重要的注解.该注解由三部分组成:

@SpringBootConfiguration: 该注解与@Configuration注解作用相同,用来声明当前也是一个配置类.

@ComponentScan: 组件扫描,默认扫描当前引导类所在的包以及子包

@EnableAutoConfiguration: SpringBoot实现自动化配置的核心注解。

@Conditional

作用:按照一定的条件进行判断,在满足给定条件之后才会被注册对应的bean对象到Spring IOC容器中。

位置: 方法,类

@ConditionalOnClass: 判断环境中是否有对应字节码文件,才注册bean到IOC容器中。

(当前环境存在指定的这个类时,才会声明该bean)

@ConditionalOnMissingBean:判断环境中没有对应的bean(类型 或者名称),注册bean到IOC容器。

(不存在该类型的bean,才会将该bean加入容器中—指定类型(value属性) 或者是名称(name属性))

@ConditionalOnProperty: 判断配置文件中对应属性和值,才到注册bean到IOC容器。

(配置文件中存在对应的属性和值,才注册到bean到IOC容器)

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值