黑马程序员JavaWeb开发|原理篇

发布时间:2024年01月18日

一、配置优先级

从低到高:

  • application.yaml(忽略)
  • application.yml
  • applaication.properties
  • java系统属性(-Dxxx=xxx)
  • 命令行参数(-xxx=xxx)

二、Bean管理

1.获取bean

默认情况下,Spring项目启动时,会把bean都创建好放在IOC容器中,如果想要主动获取这些bean,可以通过如下方式(主要针对默认的单例非延迟加载的bean而言):

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

2.bean作用域

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

  • singleton:容器内同名称的bean只有一个实例(单例)(默认)
  • prototype:每次使用该bean时会创建新的实例(非单例)
  • request:每个请求范围内会创建新的实例(了解
  • session:每个会话范围内会创建新的实例(了解
  • application:每个应用范围内会创建新的实例(了解

@Scope:用来配置bean的作用域

  • 默认singleton的bean,在容器启动时被创建,可以使用@Lazy注解来延迟初始化(延迟到第一次使用时)
  • prototype的bean,每一次使用该bean的时候都会创建一个新的实例
  • 实际开发当中,绝大部分的bean是单例的,即绝大部分bean不需要配置scope属性

3.第三方bean

@Bean:

如果要管理的bean对象来自于第三方(不是自定义的),是无法用@Component及衍生注解声明bean的,就需要用到@Bean注解。

@Componet及衍生注解@Bean注解的使用场景:

  • 项目种自定义的,使用@Componet及衍生注解
  • 项目中引入第三方的,使用@Bean注解

三、SpringBoot管理

1.Spring

Spring Framework:繁琐(依赖、配置)

Spring Boot:简单、快捷

2.SpringBoot原理

1)起步依赖原理

maven的依赖传递

2)自动配置原理?面试高频

a)自动配置:

SpringBoot的自动配置就是当spring容器启动后,一些配置类,bean对象就自动存入到了IOC容器中,不需要我们手动去声明,从而简化了开发,省去了繁琐的配置操作。

  • @ComponentScan组件扫描
  • @Import导入,使用@Import导入的类会被Spring加载到IOC容器中,导入形式如下:
    • 导入普通类

    • 导入配置类

    • 导入ImportSelector接口实现类

    • @EnableXxxx注解,封装@Import注解(方便,SpringBoot采用的方式
b)源码跟踪
@SpringbootApplication:该注解标识在SpringBoot工程引导类上,是SpringBoot中最最最重要的注解,该注解有三个部分组成:
  • @SpringbootConfiguration:该注解与@Configuration注解作用相同,用来声明当前也是一个配置类。
  • @ComponentScan:组件扫描,默认扫描当前引导类所在包及其子包。
  • @EnableAutoConfiguration:SpringBoot实现自动化配置的核心注解
@Conditional
  • 作用:按照一定的条件进行判断,在满足给定条件后才会注册对应的bean对象到Spring IOC容器中。
  • 位置:方法、类
  • @Conditional本身是一个父注解,派生出大量的子注解:
    • @ConditionalOnClass:判断环境中是否有对应字节码文件,才注册bean到IOC容器;//当前环境存在指定的这个类时,才声明该bean
    • @ConditionalOnMissingBean:判断环境中没有对应的bean(类型或名称),才注册bean到IOC容器;//当不存在当前类型的bean时,才声明该bean
    • @ConditionalOnProperty:判断配置文件中有对应属性和值,才注册bean到IOC容器。//配置文件中存在对应的属性和值,才注册bean到IOC容器

【总结】

@EnableAutoConfiguration是SpringBoot实现自动化配置的核心注解,其底层封装了@Import注解,里面指定了一个类,是ImportSelect这个接口的实现类。在这个实现类中需要实现ImportSelect接口的selectImports方法,这个方法的返回值代表的是需要将哪些类交给SpringBoot的IOC容器进行管理。

此时,该方法会读取两份文件,spring.factories和AutoConfiguration.imports,后者会配置大量的自动配置的类,这些自动配置类中并不是所有的bean都会加载到SpringBoot的IOC容器中,而是根据@Conditional注解进行条件装配,只有条件成立,才会声明这个bean,才会将这个bean交给IOC容器管理。

3)案例(自定义starter)

四、Web后端开发总结

SSM框架:SpringMVC、Spring Framework、Mybatis

文章来源:https://blog.csdn.net/YOYU_/article/details/135636821
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。