JavaWeb开发_Day14
2024-7-30
| 2024-7-30
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
参考课程:
黑马程序员 JavaWeb开发教程】
@ZZHow(ZZHow1024)

配置优先级

  • 配置文件优先级顺序:application.properties > application.yml > application.yaml
    • 虽然 SpringBoot 支持多种格式配置文件,但是在项目开发时,推荐统一使用一种格式的配置 (.yml 是主流)。
  • SpringBoot 除了支持配置文件属性配置,还支持 Java 系统属性和命令行参数的方式进行属性配置。
    • Java 系统属性:-Dserver.port=9000
      • IntelliJ IDEA 中的选项:VM options。
    • 命令行参数:--server.port=10010
      • IntelliJ IDEA 中的选项:Program arguments。
    • 执行 Maven 打包指令 package 后,运行 JAR 包时进行配置:
    • 优先级:命令行参数(--xxx=xxx) > Java 系统属性(-Dxxx=xxx) > application.properties > application.yml > application.yaml

    Bean管理

    • 获取 Bean
      • 默认情况下,Spring 项目启动时,会把 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 作用域
      • Spring 支持五种作用域,后三种在 Web 环境才生效:
        • 作用域
          说明
          singleton
          容器内同名称的 Bean 只有一个实例(单例)(默认)
          prototype
          每次使用该 Bean 时会创建新的实例(非单例)
          request
          每个请求范围内会创建新的实例(Web 环境中,了解)
          session
          每个会话范围内会创建新的实例(Web 环境中,了解)
          application
          每个应用范围内会创建新的实例(Web 环境中,了解)
    • 通过 @Scope 注解来配置作用域
      • 默认 singleton 的 Bean,在容器启动时被创建,可以使用 @Lazy 注解来延迟初始化(延迟到第一次使用时)。
      • prototype 的 Bean,每一次使用该 Bean 的时候都会创建一个新的实例。
      • 实际开发当中,绝大部分的 Bean 是单例的,绝大部分 Bean 不需要配置 Scope属性。
    • 第三方 Bean
      • @Bean 注解
        • 如果要管理的 Bean 对象来自于第三方(不是自定义的),是无法用 @Component 及衍生注解声明 Bean 的,就需要用到 @Bean 注解。
        • 若要管理的第三方 Bean 对象,建议对这些 Bean 进行集中分类配置,可以通过 @Configuration 注解声明一个配置类。
      • 通过 @Bean 注解的 name 或 value 属性可以声明 Bean 的名称,如果不指定,默认 Bean 的名称就是方法名。
      • 如果第三方 Bean 需要依赖其它 Bean 对象,直接在 Bean 定义方法中设置形参即可,容器会根据类型自动装配。
      • 总结:
        • 项目中自定义的,使用 @Component 及其衍生注解。
        • 项目中引入第三方的,使用 @Bean 注解。
    • Spring Boot 原理
      • Spring 框架
        • Spring Framework(依赖配置繁琐)
        • Spring Boot(简化 Spring 的配置)
      • Spring Boot 优势
        • 起步依赖
          • 原理:Maven 的依赖传递。
        • 自动配置
          • SpringBoot 的自动配置就是当 Spring 容器启动后,一些配置类、Bean 对象就自动存入到了 IOC 容器中,不需要手动声明,从而简化了开发,省去了繁琐的配置操作。
          • 自动配置原理
            • 方案一:@ComponentScan 组件扫描
              • 实际开发中会引入大量第三方依赖,需要配置的包会非常多,此方案将很繁琐。
            • 方案二:@Import 导入。使用 @Import 导入的类会被 Spring 加载到 IOC 容器中,导入形式主要有以下几种:
              • 导入普通类
              • 导入配置类
              • 导入 ImportSelector 接口实现类
              • @EnableXxx 注解,封装 @Import 注解(第三方依赖作者自己封装)
          • 源码跟踪
            • @SpringBootApplication 注解:该注解标识在 SpringBoot 工程引导类上,是 SpringBoot 中最重要的注解。该注解由三个部分组成:
              • @SpringBootConfiguration 注解:与 @Configuration 注解作用相同,用来声明当前也是一个配置类。
              • @ComponentScan:组件扫描,默认扫描当前引导类所在包及其子包。
              • @EnableAutoConfiguration: SpringBoot 实现自动化配置的核心注解。
          • @Conditional 注解
            • 作用:按照一定的条件进行判断,在满足给定条件后才会注册对应的 Bean 对象到 Spring IOC 容器中。
            • 位置:方法、类 @Conditional 注解本身是一个父注解,派生出大量的子注解:
              • @ConditionalOnClass注解:判断环境中是否有对应字节码文件,才注册 Bean 到 IOC 容器。
              • @ConditionalOnMissingBean 注解:判断环境中没有对应的 Bean(类型或名称),才注册 Bean 到 IOC 容器。
              • @ConditionalOnProperty 注解:判断配置文件中有对应属性和值,才注册 Bean 到 IOC 容器。
              • ……
      • 自定义 starter
        • 场景:在实际开发中,经常会定义一些公共组件,提供给各个项目团队使用。而在 SpringBoot 的项目中,一般会将这些公共组件封装为 SpringBoot 的 starter。
        • 命名规范:
          • Spring Boot 官方:spring-boot-starter-功能名
            • 如:
              • Maven: org.springframework.boot:spring-boot-autoconfigure:3.3.2(自动配置功能)
              • Maven: org.springframework.boot:spring-boot-starter-web:3.3.2(依赖管理功能)
          • 第三方提供:功能名-spring-boot-starter
            • 如:
              • Maven: org.mybatis.spring.boot:mybatis-spring-boot-autoconfigure:3.0.3
              • Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.3
              • Maven: com.github.pagehelper:pagehelper-spring-boot-autoconfigure:1.4.7
              • Maven: com.github.pagehelper:pagehelper-spring-boot-starter:1.4.7
        • 步骤:
          • 创建 xxx-spring-boot-starter 模块(依赖管理功能)。
          • 创建 xxx-spring-boot-autoconfigure 模块(自动配置功能),在 starter 中引入该模块。
          • 在 aliyun-oss-spring-boot-autoconfigure 模块中的定义自动配置功能,并定义自动配置文件 META-INF/spring/xxx.imports。

    Web后端开发总结

    Web后端开发架构
    Web后端开发架构
    Spring框架体系
    Spring框架体系
  • Java
  • JavaWeb
  • 学技术
  • JavaWeb开发_Day15JavaWeb开发_Day13
    Loading...
    目录