JavaWeb-SpringBoot原理

Bean管理:

Spring IoC(控制反转)容器对象: ApplicationContext

1. 手动获取bean:

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

2. Bean作用域:

Spring 框架支持五种作用域,其中后三种作用域主要在 Web 环境中生效,不关心。以下是这些作用域的说明:

  1. singleton:这是默认的作用域。在 Spring 容器中,同一个名称的 bean 只有一个实例。这意味着无论请求多少次,都会返回同一个实例。
  2. prototype:与 singleton 相反,每次使用该 bean 时,Spring 容器都会创建一个新的实例。这允许每个请求或每次注入时都有独立的 bean 实例。
  • Singleton 使用场景
    • 用于共享资源管理,如数据库连接池,避免重复创建资源。
    • 存储全局配置信息,保证各组件获取相同配置。
    • 提供无状态服务,像日志记录器等工具类。
    • 管理缓存,存储不常变的频繁访问数据。
  • Prototype 使用场景
    • 处理有状态的业务对象,如用户会话对象。
    • 应对多实例的业务逻辑对象,像订单处理对象。
    • 用于数据转换对象,每次转换任务独立进行。

@Scope(“singleton“/”prototype“) 配置作用域

默认为singleton:单例

实际开发时,绝大部分Bean是单例的,即绝大部分Bean不关心Scope属性

@Lazy 延迟初始化

延迟到第一次使用的时候(默认是容器启动)

3.第三方Bean管理:@Bean

自定义的bean可以用@Component及其衍生注解将对象交付于IOC容器,而来自于第三方的bean(源文件只读)中用@Bean注解。

一般创建一个配置类(用@Configuration声明)对第三方bean集中管理:

例:

@Configuration
public class CommonConfig {
    @Bean
    public SAXReader saxReader() {
        return new SAXReader();
    }
}
  • 通过 @Bean 注解的 name 或 value 属性可以声明 bean 的名称,如果不指定,默认 bean 的名称就是方法名。
  • 如果第三方 bean 需要依赖其它 bean 对象,直接在 bean 定义方法中设置形参即可,容器会根据类型自动装配。

SpringBoot原理

SpringBoot相较于原生Spring的优点:

  • 起步依赖:大大简化了pom文件中依赖的配置
  • 自动配置:简化开发时Bean的声明与配置

起步依赖:

基于Maven的依赖传递

自动配置(核心):

Spring容器启动后,自动将配置类、bean对象就存入到IOC容器中。

启动类Application的注解:@SpringBootApplication –>

@EnableAutoConfiguration–>

@Import({AutoConfigurationImportSelector.class})–>

{AutoConfigurationImportSelector.class这个实现类的String[] selectImports,其返回值即为要交给IOC容器管理的类的类名,这个方法会读取以下两个文件–>

1.spring.factories

2.AutoConfiguration.imports:配置要自动配置的类,这些类中使用@Condition的衍生注解依据设定条件进行装配。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇