码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • SpringBoot粗浅分析


    应用分析

    1、依赖管理机制

    在springBoot项目中,导入starter-web所有想换依赖都会被导入,甚至不用去规定它们的版本号。它是根据Maven的依赖传递原则来设置,只需要导入场景启动器,场景启动器自动把这个场景的所有核心依赖全部导入。不去规定版本号的原因是:每个springBoot都有一个父项目spring-boot-starter-parent,parent的父项目spring-boot-dependencies在其中声明了所有常见的jar包的依赖版本,如果想要自定义版本号,我们可以利用maven的就近原则,直接在当前项目添加properties标签,在其中声明父项目版本属性的key,或直接在依赖内添加version标签。

    2、自动配置机制(初步理解)

    ①自动配置Tomcat、SpringMVC等

    导入场景,容器中就会自动配置好这个场景的核心组件。

    • 以前:DispatcherServlet、ViewResolver、CharacterEncodingFilter…
    • 现在:自动配置完整

    查看容器中有什么组件。

    package com.louis;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class Boot302Application {
    
    	public static void main(String[] args) {
    		//java10:局部变量类型的自动推断
    		var ioc = SpringApplication.run(Boot302Application.class, args);
    		//1、获取容器中所有组件的名字
    		String[] names = ioc.getBeanDefinitionNames();
    		//2、遍历数组内容
    		for (String name : names) {
    			System.out.println(name);
    		}
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    在这里插入图片描述

    ②默认的包扫描规则

    SpringBoot只会扫描主程序所在的包及其下面的子包,自动的component-scan功能。也可以自定义扫描路径:

    • 法一:设置@SpringBootApplication的scanBasePackage属性设置,如:

      @SpringBootApplication(scanBasePackages = "com")
      
      • 1
    • 法二:观察@SpringBootApplication注解发现它是一个复合注解,可以使用@ComponentScan("com")注解设置扫描路径。

    在这里插入图片描述

    ③配置默认值

    配置文件的所有配置项是和某个类的对象值进行一一绑定的。

    绑定了配置文件中每一项的类就叫做配置属性类。如:ServerProperties绑定了所有Tomcat服务器有关的配置、MultipartProperties绑定了所有与文件上传相关的配置…

    ④按需加载自动配置

    场景启动器除了会导入相关功能依赖外,还会导入spring-boot-starter,它是基础核心starter,是所有starter的starter,在其中又导入了一个包spring-boot-autoconfigure里面都是各种场景的autoconfigure自动配置类,用来实现自动配置,虽然都在这个包中,但并不是全部都开启的。只有在导入了相关场景时才会开启相关自动配置。

    总结:导入场景启动器,触发apring-boot-autoconfigure这个包的自动配置生效,容器中就会具有相关场景的功能。

  • 相关阅读:
    Promise,async,await 面试题
    【系统架构设计】架构核心知识: 1 构件和中间件
    Json文件编辑器 ( json-editor-vue3 详细闭坑指南)
    简约的博客网页制作 大学生个人博客网页设计模板 学生个人网页成品 DIV简单个人网站作品下载 静态HTML CSS个人网页作业源代码
    如何通过 Chainlink Price Feeds获得加密资产的历史价格
    java计算机毕业设计web家教信息服务平台设计与实现源码+mysql数据库+系统+lw文档+部署
    鹰潭恒温恒湿实验室设计方案总结
    【Pandas数据处理100例】(八十五):Pandas将DataFrame数据转化成字典数据
    Flutter笔记:关于Flutter中的大文件上传(上)
    【git】项目本地文件和远端不一致,如何初始化提交git项目
  • 原文地址:https://blog.csdn.net/xry12354/article/details/132746835
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号