• JavaWeb开发06-原理-Spring配置优先级-Bean管理-SpringBoot原理-Maven继承和聚合-私服


    一、Spring配置优先级

    不同配置文件,配置同一个属性谁有效
    properties>yml>yaml

    命令行参数>Java系统属性

    项目打包后要改变属性:

    红色是Java系统属性,绿色是命令行参数

    二、Bean管理

    1.获取bean

    获取IOC容器:applicationContext就是IOC容器对象

    IOC容器中bean是默认单例的只有一个,这样三个获取的bean是同一个

    2.bean作用域

    单例还是多例取决于作用域
    关注于Spring支持前两种作用域

    默认单例的bean在容器启动的时候就会实例化,加lazy注解就会在第一次使用的时候才会实例

    3.第三方bean

    想要对Java自带的包中的类交给IOC管理,但是是只读的,所以得在使用第三方bean

    可以放在config包中,设置一个专门的类来集中分类配置

    没有设置bean的名字就是默认方法名

    三、SpringBoot原理

    Spring Framework依赖配置很麻烦,Spring Boot 简化了操作

    1.起步依赖

    在web开发中引入一个依赖就可以,是因为maven的依赖传递

    2.自动配置

    bean和配置类如何加入到IOC容器内的?

    配置类就是家里@Configration的类

    ①自动配置原理

    SpringBoot只能扫描启动包及其子包

    这样来表示要扫描的包有哪些,com.example是引入的包,com.itheima是本项目包所在
    这样很繁琐,大面积的扫描

    但是这种方法还是需要知道要导入第三方依赖中的哪些类,所以应该在第三方依赖中有块地方告诉导入者你要导入哪些?

    第三方依赖中有个Enable开头的注解,里面包含了Import注解,表示了要导入哪些类,在Spring中只需要加上这个Enable开头的注解就可以了。

    ②源码跟踪

    可以从这个注解入手,先从宏观上看结构

    AutoConfiguration中Import了一个ImportSelector的实现类,其中的一个selectImports方法中封装了哪些类需要导入到SpringBoot的IOC容器中。

    这两个文件中包含了要加载配置类的全类名,在这个配置类中表明了哪些类对象要被加载进IOC容器中,SpringBoot启动后就可以在程序中直接自动注入这个Bean对象。

    而这些Bean不会全部都注册到IOC容器中,因为ConditionalOnMissingBean注解的存在。按条件装配,当条件满足才会装配。

    ③@Conditional

    关注这三个子注解

    OnClass

    代表环境中是否存在Jwts这个类才会注册

    OnMissingBean

    代表环境中不存在这个类型的bean,意思就是有没有HeaderParser这个Bean,一般应用在用户想要自定义bean的时候,不想就是默认的

    OnProperty

    代表配置文件中是否存在指定属性与值,存在才会配置

    3.自动配置案例-starter

    有一些第三方技术没有提供与SpringBoot整合的起步依赖,但是又是很通用的,例如之前的阿里云的OSS

    黄色部分定义了该程序所需要的全部依赖,并且引入了上面红色部分的包

    目的是在项目中导入starter就可以在项目中直接使用AliyunOSSUtils这个工具类的bean,所以需要在autoconfigure中存在一个配置类,使用第三方bean的技术,新建一个方法加了注解bean,并返回一个AliyunOSSUtils对象。

    对于starter中只在poml文件中引入了autoconfigure的依赖,来进行依赖管理

    对于autoconfigure,首先在pom文件中引入了oss所需的依赖

    而在autoconfigure中有一个专门的配置类,来集中分类配置,表示哪些需要交给IOC容器管理,所以有@Configuration的注解代表是配置类
    @EnableConfigurationProperties这个注解代表是将AliOSSProperties交给IOC容器管理,下面需要这个bean只需要指定这个参数就行了。

    对于工具类aliOSSUtils是我们最终需要直接自动配置的bean,由于里面需要AliOSSProperties对象中的值,所以在autoConfigure中需要通过那个注解将AliOSSProperties交给IOC管理,就可以注入spring中yml中的相应的值

    最后需要在这个路径下定义这个文件,表示要导入哪些配置类或者类,spring启动后就会加载这个文件,将要导入的配置类交给IOC容器。

    四、总结

    Mybatis是操作数据库的,Spring Boot来简化Spring开发的

    SpringMVC是Spring framework web开发的一部分,是来简化原始servlet程序的
    基于传统SSM开发是比较繁琐的,效率比较低

    五、Maven高级

    1.分模块设计与开发

    2.继承

    ①继承关系

    就是子工程中很多都会用到的依赖可以放到父工程中。
    实现就是在子工程pom中定义parent标签

    打包方式:

    由于springboot项目默认父工程为spring-boot-stater-parent,而继承只能单继承所以需要我们继承parent,parent再继承这个spring的工程

    parent pom文件中:

    子工程中:

    ②版本锁定

    就是对依赖在父工程中进行统一管理

    对版本号还可以统一查看修改:

    3.聚合

    六、私服

    1.介绍

    2.资源上传与下载

    你上传的pom中的指定了版本,会上传到不同仓库

    1,3得在maven文件中的settings.xml修改

    上传是maven生命周期中的deploy。
    下载直接在另外工程中pom中引入需要的依赖

  • 相关阅读:
    Java中的四种引用详解
    ubuntu 20.04 使用systemback自定义系统镜像和系统备份
    异步加载JS的方法
    AVProVideo☀️四、视频播放案例
    HarmonyOS ArkTS 基础组件的使用(四)
    点云处理,分割,加标签,合并
    2022牛客暑期多校训练营9(ABEG)
    使用Excel批量生成SQL语句,用过的人都说好
    【蓝桥杯选拔赛真题15】C++三个数排序 第十二届青少年组蓝桥杯C++选拔赛真题解析
    基于java在线影院订票系统论文
  • 原文地址:https://blog.csdn.net/qq_52439738/article/details/138027686