【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;
    }
    @Override
    public String toString() {
       return "User{" +
             "name='" + name + '\'' +
             '}';
    }
}

@Configuration
public class JavaConfig {
    @Bean
    public 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'}

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

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

相关文章

为什么WP建站更适合于谷歌SEO优化?

在当今数字时代,建立一个网站似乎变得容易,但要构建一个真正能够带来流量和订单的网站却并非易事。特别是在谷歌SEO优化方面,不同的建站程序在SEO支持方面的效果差异显著。对于希望提升搜索引擎表现的用户来说,WordPress无疑是最佳…

Vue 项目中逐步引入 TypeScript 的类型检查

在现有的 Vue 项目中逐步引入 TypeScript 的类型检查 本文源于一道面试题:注:两种问法一个意思哈!! 问题一:“ 老项目Js写的,如何轻量方式享受 ts 类型?” 问题二:“如何 在现有的 …

win10系统上的虚拟机安装麒麟V10系统提示找不到操作系统

目录预览 一、问题描述二、原因分析三、解决方案四、参考链接 一、问题描述 win10系统上的虚拟机安装麒麟V10系统提示找不到操作系统,报错:Operating System not found 二、原因分析 国产系统,需要注意的点: 需要看你的系统类…

Spring中Bean的四种实例化方法

Bean的四种实例化方法 Bean是Spring核心的概念,另外一个核心的概念是AOP。官网上,Bean的解释是: In Spring, the objects that form the backbone of your application and that are managed by the Spring IoC container are called beans…

聚焦工控物联网网关

一、引言 在工业物联网高速发展的当下,工控物联网网关作为连接工业现场设备与上层管理系统、云平台的关键组件,其兼容性与可扩展性至关重要。工业生产新技术、新设备不断涌现,企业数字化转型需求持续增长,网关的适配与扩展能力直…

李宏毅机器学习笔记:【6.Optimization、Adaptive Learning Rate】

Optimization 1.Adaptive Learning Rate2.不同的参数需要不同的学习率3.Root Mean Square4.RMSProp5.Adam6.learning rate scheduling7.warm up总结 critical point不一定是你在训练一个network时候遇到的最大的障碍。 1.Adaptive Learning Rate 也就是我们要给每个参数不同的…

Redis7——基础篇(三)

前言:此篇文章系本人学习过程中记录下来的笔记,里面难免会有不少欠缺的地方,诚心期待大家多多给予指教。 基础篇: Redis(一)Redis(二) 接上期内容:上期完成了Redis的基本…

[LeetCode]day25 151.翻转字符串里的单词

题目链接 题目链接 给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意:输入字符串 s中可能…

Visual Studio Code的下载安装与汉化

1.下载安装 Visual Studio Code的下载安装十分简单,在本电脑的应用商店直接下载安装----注意这是社区版-----一般社区版就足够用了---另外注意更改安装地址 2.下载插件 重启后就是中文版本了

华为昇腾 910B 部署 DeepSeek-R1 蒸馏系列模型详细指南

本文记录 在 华为昇腾 910B(65GB) * 8 上 部署 DeepSeekR1 蒸馏系列模型(14B、32B)全过程与测试结果。 NPU:910B3 (65GB) * 8 (910B 有三个版本 910B1、2、3) 模型:DeepSeek-R1-Distill-Qwen-14B、DeepSeek…

【MySQL排错 】mysql: command not found 数据库安装后无法加载的解决办法

【MySQL排错 】mysql: command not found 数据库安装后无法加载的解决办法 A Solution to Solve Error - mysql: command not found After The Installation of MySQL Community Server By JacksonML 本文简要介绍如何在macOS安装完毕MySQL数据库服务器后,针对无…

Spring-GPT智谱清言AI项目(附源码)

一、项目介绍 本项目是Spring AI第三方调用整合智谱请言(官网是:https://open.bigmodel.cn)的案例,回答响应流式输出显示,这里使用的是免费模型,需要其他模型可以去 https://www.bigmodel.cn/pricing 切换…

用deepseek学大模型08-卷积神经网络(CNN)

yuanbao.tencent.com 从入门到精通卷积神经网络(CNN),着重介绍的目标函数,损失函数,梯度下降 标量和矩阵形式的数学推导,pytorch真实能跑的代码案例以及模型,数据,预测结果的可视化展示, 模型应用场景和优缺点&#xf…

deepseek-v3在阿里云和腾讯云的使用中的差异

随着deepseek在各大云商上线,试用了下阿里云和腾讯云的deepseek服务,在回答经典数学问题9.9和9.11谁大时,发现还是有差异的。将相关的问题记录如下。 1、问题表现 笔者使用的openai的官方sdk go-openai。 因本文中测验主要使用阿里云和腾讯…

React 与 Vue 对比指南 - 上

React 与 Vue 对比指南 - 上 本文将展示如何在 React 和 Vue 中实现常见功能&#xff0c;从基础渲染到高级状态管理 Hello 分别使用 react 和 vue 写一个 Hello World&#xff01; react export default () > {return <div>Hello World!</div>; }vue <…

STM32 HAL库 UART串口发送数据实验

一、实验目标 通过STM32的UART串口发送字符串数据到PC端串口调试助手&#xff0c;验证通信功能。 二、硬件准备 主控芯片&#xff1a;STM32F103C8T6。 串口模块&#xff1a;USB转TTL模块。 接线说明&#xff1a; STM32的USART1_TX&#xff08;PA9&#xff09; → USB-TTL模…

WPF创建自定义类和控件及打包成dll引用

WPF创建自定义类和控件及打包成dll引用 一、前言二、创建自定义类和控件并生成dll文件2.1创建类库项目2.2创建自定义类和控件2.3生成dll文件 三、在其他项目中引用3.1添加dll文件引用3.2cs文件中引用命名空间3.3XAML文件中引用命名空间 一、前言 出于一些代码复用的需求&#…

平板作为电脑拓展屏

有线串流&#xff08;速度更快&#xff09; spacedesk 打开usb对安卓的连接 用usb线直接连接电脑和平板 无线串流&#xff08;延迟高&#xff0c;不推荐&#xff09; todesk pc和手机端同时下载软件&#xff0c;连接后可以进行远程控制或扩展屏幕 spacedesk 连接到同一个…

深度学习05 ResNet残差网络

目录 传统卷积神经网络存在的问题 如何解决 批量归一化BatchNormalization, BN 残差连接方式 ​残差结构 ResNet网络 ResNet 网络是在 2015年 由微软实验室中的何凯明等几位大神提出&#xff0c;斩获当年ImageNet竞赛中分类任务第一名&#xff0c;目标检测第一名。获得CO…

【ClickHouse】Ubuntu下离线安装ClickHouse数据库并使用DBeaver连接

目录 0. 安装前准备1 安装ClickHouse1.1 下载安装包1.2 离线安装1.3 配置密码1.4 启动ClickHouse服务 2 DBeaver连接配置2.1 下载ClickHouse驱动2.2 DBeaver配置2.2.1 配置主要参数2.2.2 配置驱动 2.3 常见问题处理2.3.1 修改远程登录配置2.3.2 更新驱动配置 0. 安装前准备 有…