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中引入需要的依赖

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux之进程通信

目录 一、进程通信介绍 1.目的 2.发展 3.进程通信是什么&#xff0c;怎么通信&#xff1f; 二、管道 1.介绍 2.匿名管道 1.单向通信管道原理 2.代码实现 3.管道特征 4.管道的四种情况 5.管道的应用场景 使用管道实现一个简易版本的进程池 3.命名管道 1.思考 2.…

了解IPS和IDS:这5个差异将改变你的安全观念!

IPS 代表 入侵防御系统&#xff08;Intrusion Prevention System&#xff09;&#xff0c;它是 IDS 的进一步发展&#xff0c;不仅具备检测攻击的能力&#xff0c;还能在检测到攻击后主动采取措施阻止攻击。IPS 通常部署在防火墙和网络设备之间&#xff0c;能够深度感知并检测流…

ubuntu18.04与windows文件互传

目录 window下载Xftp软件ubuntu上的配置windows端Xftp软件的使用 window下载Xftp软件 下载&#xff1a;家庭/学校免费版 安装教程推荐下面的文章 xftp7免费版安装教程&#xff08;详细&#xff09; ubuntu上的配置 在进入系统后&#xff0c;确保有网络连接的情况下按Ctrl A…

cookie与session区别和联系

在Web应用中&#xff0c;HTTP协议是无状态的&#xff0c;每次请求都是独立的&#xff0c;服务器无法直接识别一个用户的不同请求之间的关联。这就导致了如果我们希望在一个会话中保持一些数据的状态&#xff0c;比如用户的身份认证信息、购物车内容等&#xff0c;就需要借助Coo…

golang本地缓存库之bigcache

1. 前言 上周工作之余逛github看到一个本地缓存库bigcache&#xff0c;这个是allegro公司开源的一个项目&#xff0c;主要是用于本地缓存使用&#xff0c;根据他们的博客说明&#xff0c;他们编写这个库最初的目的就是实现一个非常快速的缓存服务。 看了下bigcache这个库的源…

[StartingPoint][Tier2]Base

Task 1 Which two TCP ports are open on the remote host? (远程服务器开放了哪两个TCP端口?) $ nmap -sC -sV 10.129.234.232 22,80 Task 2 What is the relative path on the webserver for the login page? (相关的登录页面路径是什么?) /login/login.php Task 3 …

自动驾驶控制算法

本文内容来源是B站——忠厚老实的老王&#xff0c;侵删。 三个坐标系和一些有关的物理量 使用 frenet坐标系可以实现将车辆纵向控制和横向控制解耦&#xff0c;将其分开控制。使用右手系来进行学习。 一些有关物理量的基本概念&#xff1a; 运动学方程 建立微分方程 主要是弄…

格局在尘埃之间与宇宙之外。

在沈自所 见天地、见众生、见自己。 所里待了两年半&#xff0c;感叹时光飞逝&#xff0c;无疑在所这段时间&#xff0c;对我的成长是巨大的支持。感谢我的导师给予我的自由度和包容&#xff0c;感谢817所有兄弟姐妹。感谢所里面的兄弟们&#xff0c;我们一起经历了很多事情&…

ctfshow web29-web40

命令执行 看清都过滤了些什么&#xff01;&#xff01; 知识点&#xff1a; web34&#xff1a;当;和()被过滤了就用语言结构&#xff0c;一般有echo print isset unset include require web37&#xff1a;data协议是将后面的字符串当成php代码执行&#xff0c;例如 /?cdat…

【leetcode面试经典150题】62. K 个一组翻转链表(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…

Oracle 可传输表空间(Transportable Tablespace)

在数据归档、备份、测试等场景&#xff0c;我们经常需要将数据从一个系统移动到另一个系统&#xff0c;一个较常用的方案是数据的导出/导入&#xff08;export/import&#xff09;&#xff0c;但是在数据量较大的场景&#xff0c;此方案可能比较耗时。而可传输表空间是一种以文…

大数据技术应用实训室解决方案

一、大数据课程体系 1.1 大数据实验实训课程体系设计依据 大数据实验实训课程体系的设计依据主要围绕培养目标、培养方案和课程体系建设三个方面来展开。 1、培养目标 大数据实验实训课程的设计旨在培养具备大数据理论知识和实践技能的专业人才。具体而言&#xff0c;这些人才…

Midjourney 中文文档

快速使用 学习如何在Discord上使用Midjourney Bot从简单的文本提示中创建自定义图像。 行为准则 不要表现出不良行为。不要使用我们的工具制作可能引起煽动&#xff0c;不安或引起争议的图像。这包括血腥和成人内容。尊重其他人和团队。 1&#xff1a;加入Discord 访问Midj…

【软件测试】关于Web自动化测试

文章目录 &#x1f343;前言&#x1f332;如何实现Web自动化&#x1f6a9;安装驱动管理&#x1f6a9;Selenium库的安装 &#x1f333;自动化常用函数&#x1f6a9;元素的定位&#x1f388;cssSelector&#x1f388;xpath &#x1f6a9;操作测试对象&#x1f388;点击/提交对象—…

Linux中docker安装

准备工作 系统要求 Docker 支持 64 位版本 CentOS 7/8&#xff0c;并且要求内核版本不低于 3.10。 CentOS 7 满足最低内核的要求&#xff0c;但由于内核版本比较低&#xff0c;部分功能&#xff08;如 overlay2 存储层驱动&#xff09;无法使用&#xff0c;并且部分功能可能不…

个人电脑信息安全注意事项

个人电脑信息安全注意事项 一、密码安全&#xff1a; 设置复杂且独特的密码&#xff0c;避免使用容易猜测或常见的密码。 定期更换密码&#xff0c;特别是在重要账户或应用上。 不要在多个账户上重复使用相同的密码。 使用密码管理工具来安全地存储和访问密码。 二、软件安…

在传统云安全失败时提供帮助的六种策略

随着基于内存的攻击的激增继续挑战传统的云安全防御&#xff0c;对主动和全面的安全措施的需求变得至关重要。采用结合端点检测和响应、内存完整性保护和定期更新的多层方法可以加强对这些难以捉摸的威胁的防御。 随着云计算技术在各行各业的迅速普及&#xff0c;数据保护和安全…

在Windows 10中禁用Windows错误报告的4种方法,总有一种适合你

序言 在本文中&#xff0c;我们的主题是如何在Windows 10中禁用Windows错误报告。你知道什么是Windows错误报告吗&#xff1f;事实上&#xff0c;Windows错误报告有助于从用户的计算机收集有关硬件和软件问题的信息&#xff0c;并将这些信息报告给Microsoft。 它将检查任何可…

图像哈希:GLCM+DCT

文章信息 作者&#xff1a;Ziqing Huang期刊&#xff1a;IEEE&#xff08;一区&#xff09;题目&#xff1a;Perceptual Image Hashing with Texture and Invariant Vector Distance for Copy Detection 目的、实验步骤及结论 目的&#xff1a;使用GLCM进行全局特征的提取&am…

Transformer - 时间特征的处理

Transformer - 时间特征的处理 flyfish ETTm1.csv有如下内容 假如有2016/7/1 0:45:00有这样的时间字符串&#xff0c;如何变成时间特征列表 from typing import Listimport numpy as np import pandas as pd from pandas.tseries import offsets from pandas.tseries.freq…