SpringBoot基础原理
优先级(低→高)
- application.yaml (忽略)
- application.yml
- application.properties
- java系统属性(-Dxxx=xxx)
- 命令行参数(- -xxx=xxx)
获取Bean
- 默认情况下,Spring项目启动时,会把bean都创建好放在IOC容器中,如果想要主动获取这些bean,可以通过如下方式:
- 根据name获取bean:object getBean (String name)
- 根据类型获取bean:
T getBean(Class crequiredType) - 根据name获取bean(带类型转换):
T getBean(String name,Class requiredType)
上述所说的【Spring项目启动时,会把其中的bean都创建好】还会受到作用域及延迟初始化影响,这里主要针对于默认的单例非延迟加载的bean而言。
Bean的作用域
作用域 | 说明 |
---|---|
singleton | 容器内同名称的bean只有一个实例(单例)(默认) |
prototype | 每次使用该 bean时会创建新的实例(非单例) |
request | 每个请求范围内会创建新的实例(web环境中,了解) |
session | 每个会话范围内会创建新的实例(web环境中,了解) |
application | 每个应用范围内会创建新的实例(web环境中,了解) |
注意事项
- 默认singleton的bean,在容器启动时被创建,可以使用@Lazy注解来延迟初始化(延迟到第一次使用时)
- prototype的bean,每一次使用该bean的时候都会创建一个新的实例。
- 实际开发当中,绝大部分的Bean是单例的,也就是说绝大部分Bean不需要配置scope属性。
第三方Bean
==@Bean==
==如果要管理的bean对象来自于第三方〈不是自定义的),是无法用@Component及衍生注解声明bean的,就需要用到@Bean注解。==
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 玖!
评论