【Spring详解一】Spring整体架构和环境搭建

一、Spring整体架构和环境搭建

1.1 Spring的整体架构

Spring框架是一个分层架构,包含一系列功能要素,被分为大约20个模块

  • Spring核心容器:包含Core、Bean、Context、Expression Language模块
    • Core :其他组件的基本核心,主要包含Spring框架基本的核心工具类
    • Beans :包含访问配置文件、创建和管理bean以及IOC/DI(控制反转和依赖注入)操作相关的所有类
    • Context :构建与Core和Beans基础之上,继承BeanFactory,提供上下文信息,扩展出JNDI、EJB、电子邮件、国际化等功能
    • Expression Language :提供了一个强大的语言表达式用于在运行时查询和操纵对象。
  • Spring数据访问与集成
    • JDBC :提供了JDBC的抽象层
    • ORM :提供了JPA、JDO、Hibernate、iBatis 等ORM映射层
    • OXM :提供了Object/XML映射实现的抽象层,该实现包括JAXB、Castor、XMLBeans、JiBX和XStream
    • JMS(Java Messaging Service) :制造和消费消息
    • Transaction :编程和声明性的事务管理
  • Spring AOP:集成了所有AOP功能
  • Spring Web与远程调用
    • Web :提供了基础的 Web 开发的上下文信息,现有的Web框架,如JSF、Tapestry、Structs等,提供了集成
    • Web MVC:提供了 Web 应用的 Model-View-Controller 全功能实现。
    • Websocket

1.2 Spring环境搭建

1.2.1 安装git

Git - Downloads

1.2.2 安装Gradle

1.)下载安装包

下载地址:  Gradle Distributions

2)配置环境变量

#1.打开.bash_profile文件
open -e ~/.bash_profile
#2.在.bash_profile文件中配置环境变量
GRADLE_HOME=//Users/sunshine/Documents/software/gradle/gradle-7.5.1
export GRADLE_HOME
export PATH=$PATH:$GRADLE_HOME/bin

3)查看Gradle版本

gradle -version

1.2.3 下载Spring源码

git clone git@github.com:spring-projects/spring-framework.git
git clone https://github.com/spring-projects/spring-framework.git

我使用的是5.3.x分支。

注意:要使用 git@github.com:spring-projects/spring-framework.git 需要配置ssh秘钥:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
//会生成私钥文件 id_rsa 和公钥文件 id_rsa.pub
//windows 一般在 C:\Users\Administrator\.ssh 目录,linux和mac在 ~/.ssh
//把生成的公钥拷贝到GitHub 的设置中的 SSH 密钥部分

如果使用 https 超时,可以增加 Git 的 HTTP/HTTPS 超时时间:

git config --global http.lowSpeedLimit 0
git config --global http.lowSpeedTime 999999

如果使用了VPN代理服务器,确保 Git 的代理设置是正确的。你可以通过以下命令检查或设置代理:

//查看当前代理设置
git config --global --get http.proxy
//设置代理
git config --global http.proxy http://proxy_host:port
git config --global https.proxy https://proxy_host:port
//取消代理设置
git config --global --unset http.proxy
git config --global --unset https.proxy

1.2.4 配置IDEA

配置IDEA的本地gradle环境:

配置项目字节码版本:

最后在 Project Structure 配置sdk版本。

1.2.5 配置 Spring-Framework 源码的gradle仓库

配置gradle下载地址为本地(路径为gradle二进制文件压缩包路径):

//文件为 gradle/wrapper/gradle-wrapper.properties
distributionUrl=file:///F:/work_folder/gradle-7.5.1-bin.zip

配置仓库镜像 :

//根目录下文件\buildSrc\build.gradle
repositories {maven { url 'https://maven.aliyun.com/repository/public/' }maven { url 'https://maven.aliyun.com/repository/central' }mavenCentral()gradlePluginPortal()
}

根目录下文件\build.gradle 的 mavenCentral() 之前加上:

maven { url 'https://maven.aliyun.com/repository/public/' }
maven { url 'https://maven.aliyun.com/repository/central' }
maven { url "https://maven.aliyun.com/repository/spring-plugin" }
maven { url "https://maven.aliyun.com/repository/gradle-plugin" }

1.2.6 新建模块,测试环境

添加依赖 /spring-f2-test/build.gradle :

添加测试类:

public class User {String name;public User(String name) {this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +'}';}
}@Configuration
public class JavaConfig {@Beanpublic User user(){return new User("lister");}
}public class TestApplication {public static void main(String[] args) {AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(JavaConfig.class);User user = (User) context.getBean("user");System.out.println(user);}
}
//结果打印
User{name='lister'}

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

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

相关文章

Spring Boot 定时任务:轻松实现任务自动化

在现代应用开发中,定时任务是一个常见的需求。比如,我们可能需要定时清理过期数据、定时发送邮件通知等。 操作流程 开启定时任务注解 在启动类添加注解EnableScheduling 设置时间(固定时间间隔) 使用 Scheduled 注解创建定时…

DeepSeek R1生成图片总结2(虽然本身是不能直接生成图片,但是可以想办法利用别的工具一起实现)

DeepSeek官网 目前阶段,DeepSeek R1是不能直接生成图片的,但可以通过优化文本后转换为SVG或HTML代码,再保存为图片。另外,Janus-Pro是DeepSeek的多模态模型,支持文生图,但需要本地部署或者使用第三方工具。…

燧光 XimmerseMR SDK接入Unity

官网SDK文档连接: RhinoX Unity XR SDK 一:下载SDK 下载链接:RhinoX Unity XR SDK 二:打开Unity项目,添加Package 1、先添加XR Core Utilties包和XR Interaction Toolkit包 2、导 2、再导入下载好的燧光SDK 三&…

vue学习笔记

结合目录,点击阅读 文章目录 案例1:第一行vue代码App.vue引入Person.vue案例:改变变量的值案例:改变对象属性值案例:toRefs进行解包案例:给名字首字母大写案例:监视变量值的变化案例&#xff1…

初学PADS使用技巧笔记(也许会继续更新)

操作意图:网上找某个芯片封装又不想自己画,再加上没经验,怎么办? 就以AC-DC芯片PN8036为例,打开嘉立创的的DFM,打开立创商城,输入PN8036,点击数据手册,然后点击直接打开…

解锁机器学习核心算法 | 随机森林算法:机器学习的超强武器

一、引言 在机器学习的广阔领域中,算法的选择犹如为一场冒险挑选趁手的武器,至关重要。面对海量的数据和复杂的任务,合适的算法能够化繁为简,精准地挖掘出数据背后隐藏的模式与价值。机器学习领域有十大核心算法,而随…

LeetCode每日精进:225.用队列实现栈

题目链接:225.用队列实现栈 题目描述: 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 实现 MyStack 类: void push(int x…

二.数据治理流程架构

1、数据治理流程架构核心思想: 该图描绘了一个以数据标准规范体系为核心,大数据生命周期管理为主线,数据资源中心为依托,并辅以数据质量管理和大数据安全与隐私管理的数据治理流程架构。它旨在通过规范化的流程和技术手段&#x…

java_使用Spring Cloud Gateway + nacos实现跨域访问

Spring Cloud Gateway简介 Spring cloud gateway是spring官方基于Spring 5.0、Spring Boot2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供简单、有效和统一的API路由管理方式,Spring Cloud Gateway作为Spring Cloud生…

Linux中安装open-webui报sqlite版本低的解决办法

almalinux中安装好open-webui,启动服务时报如下错: RuntimeError: [91mYour system has an unsupported version of sqlite3. Chroma requires sqlite3 > 3.35.0.[0m [94mPlease visit https://docs.trychr…

基于SpringBoot+Vue的老年人体检管理系统的设计与实现(源码+SQL脚本+LW+部署讲解等)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

【AI视频】Runway注册、基本设置、主界面详解

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AI视频 | Runway 文章目录 💯前言💯Runway的正确启动方式推荐使用Google Chrome打开Chrome翻译 💯Runway的注册💯My Account(我的账户)General&a…

大数据的特点

高速、多样性、大量、低价值密度 大数据的应用场景 视频推荐,电商推荐,零售,金融 发展脉络 1.单机时代 2.大数据时代-分布式处理 Hadoop的优势 高可靠性、高拓展性、高效性、 高容错性

P8752 [蓝桥杯 2021 省 B2] 特殊年份——string提取索引转换为值

这里写目录标题 链接题目代码大佬解答string提取索引转换为值 链接 P8752 [蓝桥杯 2021 省 B2] 特殊年份 题目 代码 #include <iostream> #include <vector> #include <string> #include <algorithm> #include <math.h> #include <queue&g…

使用SHOW PROCESSLIST和SHOW ENGINE INNODB STATUS排查mysql锁等待问题

现象&#xff1a; mysql 查某表一直不能结束&#xff0c;查别的表没有问题。已知之前刚刚alter此表想把它的一个字段长度增长&#xff0c;但是这个操作一直没有结束。现在应该怎么办? 方案: 使用 SHOW PROCESSLIST; 查看当前所有活动的SQL线程&#xff0c;找出是否有长时间…

Unity UI个人总结

个人总结&#xff0c;太简单的直接跳过。 一、缩放模式 1.固定像素大小 就是设置一个100x100的方框&#xff0c;在1920x1080像素下在屏幕中长度占比1/19&#xff0c;在3840x2160&#xff0c;方框在屏幕中长度占比1/38。也就是像素长款不变&#xff0c;在屏幕中占比发生变化 2.…

Jmeter如何计算TPS

1.在jmeter中计算出接口请求的个数 1175 1172 1172 174 200 416 384 1174 5867 2.计算接口平均响应时间 计算每个接口的请求次数乘以平均响应时间&#xff0c;所有接口相加&#xff0c;然后除以所有接口的数量总和&#xff0c;得到接口的平均响应时间 (1175*18191172*…

【R语言】回归分析与判别分析

一、线性回归分析 1、lm()函数 lm()函数是用于拟合线性模型&#xff08;Linear Models&#xff09;的主要函数。线性模型是一种统计方法&#xff0c;用于描述一个或多个自变量&#xff08;预测变量、解释变量&#xff09;与因变量&#xff08;响应变量&#xff09;之间的关系…

上线了一个微软工具(免费),我独自开发,本篇有源码

各位读者老爷们好。今天给大家推荐一个我刚上线微软商店的免费工具。 起因是有一些看似简单的文本处理功能,有时却很难找到针对性的工具。 比如我前几天有需求将一个巨大的TXT文件切割成多个指定大小的小TXT,却发现很难找到趁手的批量工具。 没有,那我就写一个。 python写…

vue elementui select下拉库组件鼠标移出时隐藏下拉框

方案&#xff1a; select 监听 mouseleave事件&#xff0c;当鼠标离开时通过唯一标识ref设置select 下拉框隐藏&#xff0c;并做失焦 <el-select v-model"value" :popper-append-to-body"false" class"select_drop_inner" size"s…