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

Spring基础知识(一)

目录

1.Spring Framework

2.Spring Framework优点

3.Spring Framework的功能模块

4.Spring配置文件

5.Spring应用配置步骤

6.Spring的IoC是什么

7.IoC的理念

8.IoC体系的好处

9.Spring中的 IoC 容器

10.依赖注入的方式


1.Spring Framework

        Spring Framework即Spring框架,是所有Spring框架的基础框架。

        是一个开源框架,用来降低应用程序的耦合度。

2.Spring Framework优点

        1. 非侵入式:对应用程序本身结构影响很小,可以与原有结构结合使用

        2. 控制反转:IOC- Inversion of Control,反转资源获取方向,把自己创建资源、向环境索取资源变成环境将资源准备好,我们享受资源注入

        3. 面向切面编程:AOP- Aspect Oriented Programming,在不修改源代码的基础上增强代码功能

        4. 免费:是开源的

        5. 组件化:Spring实现了使用简单的组件配置组合成一个复杂的应用
 

3.Spring Framework的功能模块

         1. Core Container:核心容器,在Spring环境下使用任何功能都必须基于IOC容器

        2. AOP&Aspects:面向切面编程

        3. Testing:提供了对junit或TestNG测试框架的整合

        4. Data Access/Integration:提供了对数据访问/集成的功能

        5. Spring MVC:提供了面向Web应用程序的集成功能

4.Spring配置文件

        配置文件为 .xml 文件,包含类的配置与依赖注入等。

        一般的文件路径为:src\main\resources\applicationContext.xml

代码示例:比如一个配置文件可以引入外部属性文件,配置数据源,编写操作数据库的代码

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"><!--    1.引入外部属性文件--><context:property-placeholder location="jdbc.properties"></context:property-placeholder><!--    2.配置数据源--><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="${jdbc.driver}"></property><property name="url" value="${jdbc.url}"></property><property name="username" value="${jdbc.username}"></property><property name="password" value="${jdbc.password}"></property></bean><bean id="studentTest" class="com.gz.spring.pojo.Student" scope="prototype">
<!--    <bean id="studentTest" class="com.gz.spring.pojo.Student" scope="singleton">--><property name="id" value="1001"></property><property name="name" value="张三"></property></bean></beans>

详细关于配置文件管理bean的操作见:

Spring的重点知识_perseveregz的博客-CSDN博客

5.Spring应用配置步骤

        1. 配置pom.xml文件

        2. 创建pojo实体类

        3. 创建配置文件applicationContext.xml;配置一个bean对象,将对象交给IOC容器管理

        4. 进行测试

6.Spring的IoC是什么

1.概念

        IoC:Invention of Control;控制反转;也叫做DI:Dependency Injection:依赖注入

2.作用

        若对象A与对象B存在依赖关系,引入IoC后,控制权交给了IoC;当A需要B时,不需要主动与对象B进行交互,而直接让IoC创建一个对象注入到A所需要B的位置。A获取B的方式由主动创建转为被动接受注入。这,就是IoC。同时也引出了IoC的同义名词-依赖注入。

关于SpringIoC的详解见:

Spring中关于bean与IoC的解析_perseveregz的博客-CSDN博客

7.IoC的理念

        对于软件工程而言,可能需要多个系统之间、多个模块之间、多个对象之间的相互耦合,共同组成一个企业级应用工程,随着耦合度越来越高,极容易牵一发而动全身的情况,只要其中一小部分出现问题,整个工程便无法实现功能。为了解决这种系统、模块、对象之间的耦合度过高的问题,提出了IoC的概念。如今IoC的理论在Spring中得到充分的展现。IoC其实就相当于一个第三方中间件,对象之间都根据这个第三方形成依赖关系。

8.IoC体系的好处

IoC体系的好处在于:之前对象之间组成依赖关系,若其中一个对象出现问题,则全局无法开展;而使用一个第三方中间件之后,尽管其中一个对象出现问题,其他模块都能够正常工作。因此,可以将IoC容器看作是所有对象之间的粘合剂,这些对象的控制权都交给了IoC,这样就叫做控制反转。


9.Spring中的 IoC 容器

Spring提供了两种IOC容器的实现方式:BeanFactory;ApplicationContext

     BeanFactory:IOC容器的基本实现,是Spring内部使用的接口,面向Spring本身,不提供给开发人员使用

     ApplicationContext:BeanFactory的子接口,面向Spring的使用者
 

10.依赖注入的方式

通过三种方式

        构造函数注入

        setter方法注入

        接口注入(由接口提供的方法进行对象注入,但现在不推荐使用)

相关文章:

Spring基础知识(一)

目录 1.Spring Framework 2.Spring Framework优点 3.Spring Framework的功能模块 4.Spring配置文件 5.Spring应用配置步骤 6.Spring的IoC是什么 7.IoC的理念 8.IoC体系的好处 9.Spring中的 IoC 容器 10.依赖注入的方式 1.Spring Framework Spring Framework即Spring框…...

易语言使用node编译的js文件

环境配置 npm install -g cnpm babel-preset-env babel-cli babel-polyfill browserifynpm install -g crypto-js nodejs转js 例如加密模块 browserify -r babel-polyfill -r crypto-js -o es6.txt browserify file.js -o es6.txt易语言 使用v8 推荐 直接生成导入js即…...

计算机网络笔记:动态主机配置协议(DHCP)

协议配置&#xff1a; 为了把协议软件做成通用和便于移植的&#xff0c;协议软件的编写者不会把所有的细节都固定在源代码中&#xff0c;相反&#xff0c;他们把协议软件参数化&#xff0c;这就使得在很多台计算机上有可能使用同一个经过编译的二进制代码。一台计算机和另一台…...

新买的电脑怎么用U盘重装系统?新买的电脑用U盘重装系统教程

新买的电脑怎么用U盘重装系统&#xff1f;用户新买了电脑&#xff0c;想知道怎么用U盘来重装新买的电脑&#xff0c;用U盘来重装电脑其实非常简单&#xff0c;用户需要准备一个U盘&#xff0c;然后完成U盘启动盘的安装&#xff0c;接着按照以下分享的新买的电脑用U盘重装系统教…...

图像边缘检测原理

文章目录 图像边缘检测原理1:2:3:基本边缘检测算子 图像边缘检测原理 1: 图像的边缘指的是图像中像素灰度值突然发生变化的区域&#xff0c;如果将图像的每一行像素和每一列像素都描述成一个关于灰度值的函数&#xff0c;那么图像的边缘对应在灰度值函数中是函数值突然变大的…...

爬虫利器 Beautiful Soup 之遍历文档

Beautiful Soup 简介 Beautiful Soup 是一个可以从 HTML 或 XML 文件中提取数据的 Python 库&#xff0c;它提供了一些简单的操作方式来帮助你处理文档导航&#xff0c;查找&#xff0c;修改文档等繁琐的工作。因为使用简单&#xff0c;所以 Beautiful Soup 会帮你节省不少的工…...

12、Nginx高级之高级模块(secure_link/secure_link_md5)

一、功能 防盗链&#xff1b; ngx_http_secure_link_module模块用于检查所请求链接的真实性&#xff0c;保护资源免受未经授权的访问&#xff0c;并限制链接寿命。 该模块提供两种可选的操作模式。 第一种模式由 secure_link_secret 指令启用&#xff0c;用于检查所请求链接的真…...

【python】数据可视化,使用pandas.merge()对dataframe和geopandas类型数据进行数据对齐

目录 0.环境 1.适用场景 2.pandas.merge()函数详细介绍 3.名词解释“数据对齐”&#xff08;来自chatGPT3.5&#xff09; 4.本文将给出两种数据对齐的例子 1&#xff09;dataframe类型数据和dataframe类型数据对齐&#xff08;对齐NAME列&#xff09;&#xff1b; 数据对…...

大模型入门(三)—— 大模型的训练方法

参考hugging face的文档介绍&#xff1a;https://huggingface.co/docs/transformers/perf_train_gpu_many#naive-model-parallelism-vertical-and-pipeline-parallelism&#xff0c;以下介绍聚焦在pytorch的实现上。 随着现在的模型越来越大&#xff0c;训练数据越来越多时&…...

人机交互学习-4 交互设计过程

交互设计过程 交互设计过程基本活动关键特征 设计过程中的问题如何选取用户&#xff1f;如何明确需求&#xff1f;如何提出候选方案&#xff1f;如何在候选方案中选择&#xff1f; 交互设计生命周期模型星型生命周期模型可用性工程生命周期模型 交互设计过程管理界面设计的4个支…...

大话Stable-Diffusion-Webui之kohya-ss主题更改

文章目录 kohya-sskohya-ss主题更改添加背景图片更改组件样式自定义主题规范更改主题的另一种方式kohya-ss kohya-ss是一个专门用于训练Dreambooth、LoRA等小模型的项目,本身没有GUI界面,需要通过python命令去调用使用,这对于不懂python的同学来说门槛稍微有点高,于是有人…...

搜索在计算机中的地位十分重要

无论是在内部系统还是在外部的互联网站上&#xff0c;都少不了检索系统。数据是为了用户而服务。计算机在采集数据&#xff0c;处理数据&#xff0c;存储数据之后&#xff0c;各种客户端的操作pc机或者是移动嵌入式设备都可以很好的获取数据&#xff0c;得到 想要的数据服务。 …...

多模态深度学习:定义、示例、应用

人类使用五种感官来体验和解读周围的世界。我们的五种感官从五个不同的来源和五种不同的方式捕捉信息。模态是指某事发生、经历或捕捉的方式。 人脑由可以同时处理多种模式的神经网络组成。想象一下进行对话——您大脑的神经网络处理多模式输入&#xff08;音频、视觉、文本、…...

基于ZCU106平台部署Vitis AI 1.2/2.5开发套件【Vivado+Vitis+Petalinux2020/2022】

Vitis AI是 Xilinx 的开发平台&#xff0c;适用于在 Xilinx 硬件平台&#xff08;包括边缘设备和 Alveo 卡&#xff09;上进行人工智能算法推理部署。它由优化的IP、工具、库、模型和示例设计组成。Vitis AI以高效易用为设计理念&#xff0c;可在 Xilinx FPGA 和 ACAP 上充分发…...

ChatGPT原理简介

承接上文GPT前2代版本简介 GPT3的基本思想 GPT2没有引起多大轰动&#xff0c;真正改变NLP格局的是第三代版本。 GPT3训练的数据包罗万象&#xff0c;上通天文下知地理&#xff0c;所以它会胡说八道,会说的贼离谱&#xff0c;比如让你穿越到唐代跟李白对诗&#xff0c;不在一…...

从0搭建Hyperledger Fabric2.5环境

Hyperledger Fabric 2.5环境搭建 一.Linux环境准备 # root登录 yum -y install git curl docker docker-compose tree yum -y install autoconf autotools-dev automake m4 perl yum -y install libtool autoreconf -ivf # 安装jq相关包 cd /opt git clone --recursive https…...

Rust每日一练(Leetday0026) 最小覆盖子串、组合、子集

目录 76. 最小覆盖子串 Minimum Window Substring &#x1f31f;&#x1f31f;&#x1f31f; 77. 组合 Combinations &#x1f31f;&#x1f31f; 78. 子集 Subsets &#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Rust每日一练 专栏 Gola…...

c# 从零到精通-ArrayList-Hashtable的操作

c# 从零到精通-ArrayList-Hashtable的操作 1、ArrayList的操作 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Collections; namespace Test11 { class Program { static void Main(string[] args) { ArrayList list …...

pnpm带来了什么

首先 pnpm 和 npm yarn 一样是包管理工具&#xff0c;他解决了npm 和 yarn 存在的一些问题 npm3之前每个依赖都是一层嵌套一层的&#xff0c;每个依赖里都有node_modules 用来存放依赖所需的依赖包导致重复下载的依赖包很多&#xff0c;一层层嵌套&#xff0c;嵌套很深&#x…...

图像分类模型嵌入flask中开发PythonWeb项目

图像分类模型嵌入flask中开发PythonWeb项目 图像分类是一种常见的计算机视觉任务&#xff0c;它的目的是将输入的图像分配到预定义的类别中&#xff0c;如猫、狗、花等。图像分类模型是一种基于深度学习的模型&#xff0c;它可以利用大量的图像数据来学习图像的特征和类别之间…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...