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中的<version>指定了版本,会上传到不同仓库

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/2111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中国1KM降水侵蚀因子R(2000-2022)

降雨侵蚀力因子其实是用来描述降雨对土壤侵蚀的潜在能力大小的&#xff0c;就是降雨的冲刷对土壤的侵蚀效应。 到降雨侵蚀力因子R的计算方法非常的繁多&#xff0c;不过这些计算方法总结下来&#xff0c;核心思路其实大概可以分为两种&#xff1a;一种是将降雨的动能引入模型来…

shell(52) : 获取资源信息(过滤无效信息)

cpu负载和cpu使用率 # cpu使用率 2.9 top -bn1|grep Cpu|awk {print $2} # cpu负载 0.13 top -bn1|grep load |awk {print $14} 内存使用率 # 16227860_12608036 总_使用 单位B free |grep Mem|awk {print $2"_"$3} 磁盘使用率 df -h | awk {print $1"_&qu…

资料总结分享:临床重要数据库

目录 RefSeqGene数据库 UCSC基因组数据库 gnomAD&#xff08;全称&#xff1a;Genome Aggregation Database&#xff09; dbSNP&#xff08;Single Nucleotide Polymorphism Database&#xff09; ExAC数据库&#xff08;Exome Aggregation Consortium&#xff09; 1000 G…

重庆思庄技术分享——Bug 12861117 RMAN 会话旋转

Bug 12861117 RMAN 会话旋转 现象&#xff1a; CPU 使用 率过高 挂起&#xff08;进程旋转&#xff09; RMAN-2005 / RMAN-565 / LFI-5 RMAN &#xff08;Recovery Manager&#xff09; 描述&#xff1a; 在某些情况下&#xff0c;如果写入日志文件时遇到磁盘已满的情况 或输入…

【数据结构-串-数组-广义表】

目录 1 串-理解1.1 串的抽象定义&#xff1a;-理解1.2 串的存储结构-不断掌握1.2.1 顺序存储结构&#xff1a;1.2.2 链式存储结构&#xff1a; 1.3 串的模式匹配算法&#xff1a;-掌握1.3.1 BF暴力求解算法-代码 -掌握1.3.2 KMP求解算法-代码--掌握 2 数组-不断掌握2.1 顺序存储…

【总结】mysql 使用shell 脚本远程安装启动不会自动退出结束

问题 使用shell脚本&#xff0c;远程安装部署mysql并启动mysql&#xff0c;当mysql启动命令执行完毕后&#xff0c;远程ssh 命令不会自动结束&#xff0c;安装程序一直卡着不动。 ssh xxx192.168.10.11 “install_mysql.sh” 在 install_mysql.sh 脚本中&#xff0c;启动mysq…

计算机网络3——数据链路层5高速以太网

文章目录 一、100BASE-T 以太网二、吉比特以太网三、10吉比特以太网(10GbE)和更快的以太网四、使用以太网进行宽带接入 随着电子技术的发展&#xff0c;以太网的速率也不断提升。从传统的10Mbits以太网一直发展到现在常用的速率为1Gbits的吉比特以太网&#xff0c;甚至更快的以…

1.求指定宽度的文本的高度,2.ubuntu下ping ipv6,3.git提示:终止提交因为提交说明为空

1.如何求指定宽度的文本的高度 paintEvent(QPaintEvent *event) {QPainter painter(this);QString text "Invalid parameter passed to C runtime function.";QFontMetrics fm(qApp->font());QTextDocument doc(text);doc.setDefaultFont(painter.font());doc.s…

Java中的super

package day33; ​ public class Person {public String name;public int age; ​public Person() {System.out.println("调用了父类的无参构造");} } ​ package day33; ​ public class teacher extends Person{public teacher() {System.out.println("调用了…

为什么iPhone支持整页中文OCR应用很少?有什么好的解决方法?

iPhone上面没有支持中文整页OCR识别的app&#xff0c;这是一个值得探讨的问题。OCR&#xff0c;即光学字符识别&#xff0c;是一种将纸质文档或图片中的文字转化为可编辑文本的技术。随着科技的发展&#xff0c;OCR技术已经广泛应用于各个领域&#xff0c;包括文档处理、图像识…

Python | Leetcode Python题解之第44题通配符匹配

题目&#xff1a; 题解&#xff1a; class Solution:def isMatch(self, s: str, p: str) -> bool:def allStars(st: str, left: int, right: int) -> bool:return all(st[i] * for i in range(left, right))def charMatch(u: str, v: str) -> bool:return u v or v…

paddlepaddle/paddle 命令注入漏洞复现_$1500 CVE-2024-0934

目录 1.漏洞概述 2.影响版本 3.漏洞等级 4.漏洞复现 4.1 安装漏洞环境

Linux开机启动流程

Linux开机启动流程详细步骤如下图&#xff1a; 其中&#xff1a; POST:Power On Self Test --加电自检 BIOS: Basic Input Output System --基础输入输出系统 MBR: Master Boot Record --主引导记录 GRUB: GRand Uni…

计算机视觉成新宠儿,三防平板助力医疗保健

计算机视觉是医疗保健行业的一个相当新的趋势&#xff0c;其中图像用于帮助识别和预测患者的诊断&#xff0c;提高准确性&#xff0c;利用计算机图像来做到这一点。图像被拍摄并上传到系统中&#xff0c;然后通过计算机算法进行分析&#xff0c;以优化医疗诊断&#xff0c;例如…

【数据结构(邓俊辉)学习笔记】绪论04——算法分析

文章目录 0. 前言1. 算法分析2.级数2.1基本形式2.2 收敛级数 3.循环 vs 级数4.示例 0. 前言 通过以基本计算模型作为参照&#xff0c;并且以大O记号的形式在上面添加适当刻度&#xff0c;已经建立一套对DSA进行分析的完整工具和体系。不清楚的可以看看复杂度度量 、复杂度分析…

什么是健康管理——健康评估实训室

健康管理—健康评估实训室是一种以健康评估为核心&#xff0c;集教学、实验、实训为一体的多功能教学场所&#xff0c;其主要目的在于通过模拟真实的工作场景和运用先进的健康评估工具&#xff0c;帮助学生掌握健康评估的理论知识和实际操作技能&#xff0c;以便在未来的职业生…

嘴尚绝卤味:传统与现代的完美结合

卤味&#xff0c;作为中国传统美食中的一大类&#xff0c;凭借其独特的口感和丰富的风味&#xff0c;一直深受食客们的喜爱。而在众多卤味品牌中&#xff0c;嘴尚绝卤味凭借其卓越的品质和创新的口味&#xff0c;成为了市场上的佼佼者。今天&#xff0c;就让我们一起来品味嘴尚…

一句话或一张图讲清楚系列之——IDELAYE2的用法

主要参考&#xff1a; Xilinx IDELAYE2应用笔记及仿真实操-CSDN博客 xilinx原语介绍及仿真——IDELAYE2 & IDELAYCTRL_idelayctrl原语使用说明-CSDN博客 1 原理 IDELAYE2一般用于对输入lvds高速信号进行延时微调&#xff0c;可以把时钟和数据都单独微调&#xff1b;如果数…

11-4.Vue2.x基本列表—列表更新—push

文章目录 列表更新数组更新检测 列表更新 数组更新检测 变更方法 Vue 将被侦听的数组的变更方法进行了包裹&#xff0c;所以它们也将会触发视图更新。这些被包裹过的方法包括&#xff1a; push() pop() shift() unshift() splice() sort() reverse()<!DOCTYPE html> &…

pdf加水印怎么加?自己原创的PDF资料分享到网络上需要采取一些版权保护的措施,添加水印就是个不错的选择

一&#xff0c;水印的基本概念 水印通常是一种用于标识文件来源、版权信息或防止非法复制的标记。它可以是文字、图形或图像等形式&#xff0c;以半透明或半淡化的方式嵌入到文件中&#xff0c;既不影响文件的正常阅读&#xff0c;又能起到标识和保护的作用。 二&#xff0c;…