当前位置: 首页 > news >正文

SpringBoot一些困惑及梳理

  1. Spring中常用的classpath前缀到底指向哪里? classpath实际就是和java命令行运行时指定的classpath是同一个概念,在idea+maven中也就是指向target/classes目录。不要被网上哪些复制粘贴的文章所迷惑。
  2. classpath: 和 classpath*: 到底什么区别? classpath: 实际就是当找到一个符合要求的文件之后就不再寻找,如果是只在当前项目中寻找文件,建议使用这种,后者耗时大。个人猜测: 查找逻辑和ClassLoader.getResources()的查找逻辑相同,先查自身项目,再查依赖的jar包。这也就解释了为什么很多情况下使用前者就可以满足需求了。
  3. 依赖的jar可以包含jar吗? 不可以,只能包含目录及.Class文件。如果想使用嵌套jar,建议使用MANIFEST.MF实现。
  4. Spring中的ClassLoader.getResources()和Class.getResources()有什么区别? 本质没区别,Class.getResources()底层使用了ClassLoader.getResources()。
  5. SpringBoot为什么可以整合其它Starter? Starter原理是什么? 为什么SpringBoot可以扫描到其它依赖的Jar包? @EnableAutoConfigration在其中发挥了什么作用? SpringBoot可以整合其它Starter,本质是利用了spring.factories这个文件,当在启动类上添加@EnableAutoConfigration注解之后,SpringBoot会尝试从classpath中获取所有的spring.factories,就是从所有的依赖jar及当前项目的target/classes中查找spring.factories,第三方jar只需要把相应的配置类也就是带有@Configration的类配置到spring.factories中即可扫描到第三方jar的类。Starter的原理就是利用SpringBoot的SPI机制实现的。SpringBoot通过上述原理扫描到依赖Jar包的配置类。
  6. Maven的多模块和Idea多模块什么区别? Maven为我们做了什么工作? 首先,二者的多模块都是为了使项目结构更加清晰,更加便于维护,Idea是为了迎合Maven的多模块的优势做出了相应的改变。Maven只是对我们所做的一些复杂琐碎的工作做了包装,把我们从项目 <下载依赖–编译–构建–打包–多模块管理> 中解脱出来。
http://www.lryc.cn/news/146637.html

相关文章:

  • PostgreSQL汉字转拼音首字母
  • HBuilderX修改manifest.json设置,解决跨域问题(CORS、Cross-Origin)
  • AR地图微信小程序:数字化时代下地图应用的新突破
  • 成集云 | 抖店客户静默下单催付数据同步钉钉 | 解决方案
  • C++中的运算符总结(5):按位逻辑运算符
  • 《异常检测——从经典算法到深度学习》22 Kontrast: 通过自监督对比学习识别软件变更中的错误
  • 大数据风控介绍
  • Linux内核学习(九)—— 虚拟文件系统(基于Linux 2.6内核)
  • 【模拟】算法实战
  • 各个微服务模块之间互相依赖调用的问题
  • 理论转换实践之keepalived+nginx实现HA
  • 华为OD七日集训第1期复盘 - 按算法分类,由易到难,循序渐进,玩转OD(文末送书)
  • MPI之持久化通信句柄与非持久化通信句柄
  • 搭建个人备忘录中心服务memos、轻量级笔记服务
  • 探究代理技术在网络安全、爬虫与HTTP通信中的多重应用
  • vue左侧漏斗切换 echart图表动态更新
  • Centos7安装ZK-UI管理界面安装|Maven|Git|
  • C语言日常刷题7
  • 037 - 有关时间和日期的函数方法
  • (JAVA)树——tree
  • js判断对象是否为空对象的方法总结
  • LeetCode1049. 最后一块石头的重量 II
  • universal robot 机械臂 官方基本教程
  • 网络常见安全漏洞
  • 【JS案例】JS实现图片放大镜功能
  • linux centos7 bash中字符串反向输出
  • c++:QT day1 认识与学习
  • git rebase和merge区别
  • Vue插槽实现商品列表-编辑渲染
  • Vue开发之父子组件