• spring-Bean管理-springboot原理-Maven高级


    配置优先级

    在这里插入图片描述
    在这里插入图片描述

    优先级(低→高)
    application.yaml(忽略)
    application.yml
    application.properties
    java系统属性(-Dxxx=xxx)
    命令行参数(–xxx=xxx)

    Bean管理

    1.获取bean

    在这里插入图片描述

    上述所说的【Spring项目启动时,会把其中的bean都创建好】还会受到作用域及延迟初始化影响,这里主要针对于默认的单例非延迟加载的bean而言。

    2.bean作用域

    在这里插入图片描述

    可以通过@Scope注解来进行配置作用域:@Scope( “prototype”)
    默认singleton的bean,在容器启动时被创建,可以使用@Lazy注解来延迟初始化(延迟到第一次使用时)。prototype的bean,每一次使用该bean的时候都会创建一个新的实例。
    实际开发当中,绝大部分的Bean是单例的,也就是说绝大部分Bean不需要配置scope属性。

    3.第三方bean

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

    SpringBoot原理

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

    Maven高级

    1.分模块设计与开发

    将项目按照功能拆分成若干个子模块,方便项目的管理维护、扩展,也方便模块间的相互调用,资源共享。(将项目分成若干个maven模块,引入maven依赖相互调用)

    在这里插入图片描述

    2.继承与聚合

    在这里插入图片描述

    jar:普通模块打包,springboot项目基本都是jar包(内嵌tomcat运行)
    war:普通web程序打包,需要部署在外部的tomcat服务器中运行
    pom:父工程或聚合工程,该模块不写代码,仅进行依赖管理

    在这里插入图片描述

    若父子工程都配置了同一个依赖的不同版本,以子工程的为准。

    在这里插入图片描述

    < dependencies >是直接依赖,在父工程配置了依赖,子工程会直接继承下来。
    < dependencyManagement >是统一管理依赖版本,不会直接依赖,还需要在子工程中引入所需依赖(无需指定版本)

    在这里插入图片描述
    在这里插入图片描述

    作用:
    聚合 用于快速构建项目
    继承 用于简化依赖配置、统一管理依赖
    相同点:
    聚合与继承的pom.xml文件打包方式均为pom,可以将两种关系制作到同一个pom文件中
    聚合与继承均属于设计型模块,并无实际的模块内容
    不同点:
    聚合是在聚合工程中配置关系,聚合可以感知到参与聚合的模块有哪些
    继承是在子模块中配置关系,父模块无法感知哪些子模块继承了自己

    3.私服
    1.介绍

    在这里插入图片描述

    2.资源上传与下载

    在这里插入图片描述
    使用私服,需要在maven的settings.xml配置文件中,做如下配置:

    1. 需要在 servers 标签中,配置访问私服的个人凭证(访问的用户名和密码)

      <server>
          <id>maven-releasesid>
          <username>adminusername>
          <password>adminpassword>
      server>
          
      <server>
          <id>maven-snapshotsid>
          <username>adminusername>
          <password>adminpassword>
      server>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
    2. mirrors 中只配置我们自己私服的连接地址(如果之前配置过阿里云,需要直接替换掉)

      <mirror>
          <id>maven-publicid>
          <mirrorOf>*mirrorOf>
          <url>http://192.168.150.101:8081/repository/maven-public/url>
      mirror>
      
      • 1
      • 2
      • 3
      • 4
      • 5
    3. 需要在 profiles 中,增加如下配置,来指定snapshot快照版本的依赖,依然允许使用

    <profile>
        <id>allow-snapshotsid>
            <activation>
            	<activeByDefault>trueactiveByDefault>
            activation>
        <repositories>
            <repository>
                <id>maven-publicid>
                <url>http://192.168.150.101:8081/repository/maven-public/url>
                <releases>
                	<enabled>trueenabled>
                releases>
                <snapshots>
                	<enabled>trueenabled>
                snapshots>
            repository>
        repositories>
    profile>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    1. 如果需要上传自己的项目到私服上,需要在项目的pom.xml文件中,增加如下配置,来配置项目发布的地址(也就是私服的地址)

      <distributionManagement>
          
          <repository>
              <id>maven-releasesid>
              <url>http://192.168.150.101:8081/repository/maven-releases/url>
          repository>
          
          
          <snapshotRepository>
              <id>maven-snapshotsid>
              <url>http://192.168.150.101:8081/repository/maven-snapshots/url>
          snapshotRepository>
      distributionManagement>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
    2. 发布项目,直接运行 deploy 生命周期即可 (发布时,建议跳过单元测试)

  • 相关阅读:
    多线程开发中,多用消息传递,少用锁
    计算机毕业设计Python深度学习美食推荐系统 美食可视化 美食数据分析大屏 美食爬虫 美团爬虫 机器学习 大数据毕业设计 Django Vue.js
    穿透、无底洞、雪崩、击穿 解决方案?
    odoo 为可编辑列表视图字段搜索添加查询过滤条件
    Linux-SUID提权
    苹果电脑双系统正确打开方式,虚拟机已经Out了
    达梦DEM监控配置
    《机器学习实战》学习笔记(十二)
    HashMap的基本使用
    语言基础篇8——表达式,多种多样的表达方式
  • 原文地址:https://blog.csdn.net/m0_59230408/article/details/130024359