JavaEE进阶5/24(Spring入门)

news2024/12/22 14:27:22

1.IOC

控制反转

把对象的生命周期的控制权由程序员反转给其他人。

控制反转减少了代码的耦合性。

哪里发生了反转?f

1.对象生命周期的控制权由程序员转交给Spring

2.对象创建的顺序反转了,原本程序员通过new来创建的是从外层到内层的,控制反转的话是从内到外的,内部改变的话由于要把内部传给外部,外部不需要改变。

 

2.Spring

Spring是一个包含了众多工具和方法的IOC容器

说白了就是Spring来帮助你管理对象的生命周期

3.DI

dependecy  injection 依赖注入

DI就是在程序运行期间,动态的将某个对象引入当前类的机制/行为。

        

  

4.Spring项目的创建和bean对象的存取

Spring项目的创建

1.创建maven项目

2.引入spring.xml依赖在resource里面


存入Bean对象

1.创建Bean对象

Bean对象就是一个普通的对象

2.将类注册到Spring当中(逻辑上的存储,不是物理上的。只是声明了一下)

首先需要在resource里面配置Spring的配置文件

只需要在resource里面创建一个文件然后把spring配置文件CV进去。

添加配置文件的目的就是让Spring启动的时候把bean带进去启动

3.获取并使用bean对象

1.得到Spring对象(Spring上下文对象,一个意思)

2. 从spring中取出bean对象

3.使用Bean

这个spring配置文件的目的就是告诉spring一些信息,比如说我写了这个 

就是告诉Spring你加载的时候不要忘记带上我User类 

xml就是记录一些要干的事情(记事本)是一个描述性的指导性文件

我们看到上面那个从spring中取出bean对象需要强转,那么如果getBean()里面的id不存在就会得到null,对null进行强转就会报错

 不存在users,对null进行了强转

那么引出来了,另一种找到bean对象的方法 

applicationContext.getBean("user",User.class) 第一个参数是id 第二个参数是类型(class) 这种是主推的获取bean对象的方法

        

5.ApplicationContext 和BeanFactory 的区别? 

不必认为ApplicationContext加载所有的类会消耗资源,实际上Spring在设置的时候是根据你的硬件资源来决定加载多少的,硬件越强,加载的越多.

资源够的情况下,直接饿汉模式一次性全部加载,一般认为也是这样的

BeanFactory是懒加载,ApplicationContext是饿加载。后者性能高,并且后者是前者的子类,包含父类的所有方法,此外还有一些更多的功能......

 

总结:BeanFactory是懒汉模式,它在调用getBean方法的时候才会实例这个对象。

ApplicationContext是饿汉模式,它在实例化的时候已经实例化所有的bean对象

6.更好的方法去存取和读取bean对象(注解)

MySQL三大核心:连表查询 索引 和事务

1.前置工作:配置扫描bean的路径

2.添加注解

 方法注解是将方法返回的对象存储到Spring当中(存到spring当中最小的是对象,不是方法)

五大类注解实现注解

1.Controller:控制器

2.Service :服务

3.Repository :仓库 repository

4.Component :组件

5.Configuration :配置 

方法注解实现类注解

将当前方法返回的对象存储到Spring当中

7.注解的具体实现

就是在

写入路径,然后在类或者方法上加注解  在注册个Spring上下文getBean即可

8.五大类注解

为什么要有五种类注解呢?

1.通过类注解可以了解当前类的用途(比如看到车牌陕A就知道这是西安的车)

2.功能有轻微的不同        

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

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

相关文章

原型设计工具Quant-UX

什么是 Quant-UX ? Quant UX 是一种研究、可用性和原型设计工具,可快速测试您的设计并获得数据驱动的洞察力。Quant-UX 使验证您的想法变得简单。使用 Quant UX 的可视化编辑器可在几分钟内创建一个交互式原型,感觉就像真正的应用程序一样。 …

使用Windbg静态分析dump文件的一般步骤详解

目录 1、概述 2、静态分析dump文件的一般步骤 2.1、查看异常类型 2.2、使用.ecxr命令切换到发生异常的线程上下文,查看发生异常的那条汇编指令 2.3、使用kn/kv/kp命令查看异常发生时的函数调用堆栈 2.4、使用lm命令查看模块的时间戳,找到对应的pdb…

基于变形模板的弱监督体图像分割

文章目录 Weakly Supervised Volumetric Image Segmentation with Deformed Templates摘要本文方法实验结果 Weakly Supervised Volumetric Image Segmentation with Deformed Templates 摘要 背景 有许多方法可以对网络进行弱监督训练来分割2D图像。依赖于对3D图像的2D切片的…

python之SSTI漏洞介绍

SSTI模板注入 Python类 类(class)是Python中的一种基本的程序组织结构。它们允许定义一种新的数据类型,称为对象(object),并为该类型定义行为(即方法)。 Python中的类由关键字cla…

Zabbix监控系统超详细操作配置

一、Zabbix概述 1、使用zabbix的原因 作为一个运维,需要会使用监控系统查看服务器状态以及网站流量指标,利用监控系统的数据去了解上线发布的结果,和网站的健康状态。 利用一个优秀的监控软件,我们可以: ●通过一个友好的界面进…

多元回归预测 | Matlab阿基米德算法(AOA)优化最小二乘支持向量机回归预测,AOA-LSSVM回归预测,多变量输入模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元回归预测 | Matlab阿基米德算法(AOA)优化最小二乘支持向量机回归预测,AOA-LSSVM回归预测,多变量输入模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源码…

使用uniapp开发国际化---app,vue,nvue

插件市场下载示例 hello-i18n 示例工程 - DCloud 插件市场 项目使用 main.js引入 // 国际化 json 文件,文件内容详见下面的示例 import en from ./en.json import zhHans from ./zh-Hans.json import zhHant from ./zh-Hant.json const messages {en,zh-Hans: …

【Spring】 ——初识Spring

Spring学习思维导图(仅供参考),如有需要可以到我的资源自行下载 目录 一、为什么学Spring🍭 官方解释🧁 解释🧁 二、Spring是什么🍭 1、核心特点🧁 Ⅰ、控制反转(Io…

15-Vue技术栈之创建Vue3.0工程

目录 1.使用 vue-cli 创建2.使用 vite 创建 1.使用 vue-cli 创建 官方文档:https://cli.vuejs.org/zh/guide/creating-a-project.html#vue-create ## 查看vue/cli版本,确保vue/cli版本在4.5.0以上 vue --version ## 安装或者升级你的vue/cli npm insta…

DAY 70 WEB缓存——squid代理服务器应用

正向代理:代替客户端向服务端发送请求。 反向代理:代理服务端,将请求转发给多个服务端。 Squid代理服务器介绍 Squid 主要提供缓存加速、应用层过滤控制的功能。 代理的工作机制(缓存网页对象,减少重复请求&#x…

深度学习常用名词解析

深度学习: 英文DL(Deep Learning),指多层的人工神经网络和训练它的方法。一层大量的神经网络会把大量的矩阵数字作为输入,通过非线性激活方法获取权重,再产生另一个数据集和作为输出。 Epoch: 在模型训练的时候含义是训练集中的…

数据结构——实现双向链表

文章目录 :cool:前言:smile:带头双向循环链表的结构体搭建和初始化的操作:bear:创造一个哨兵位头结点:monkey:申请一个节点:dog:初始化:cat:打印:potato:判空:tomato:销毁:cow:尾插:strawberry:头插:banana:尾删:orange:头删:pear:查找:watermelon:在pos位置之前插入:apple:删除…

electron-vue 运行报错 Object.fromEntries is not a function

文章目录 1. 背景2. 解决方案2.1 第一步:安装依赖2.2 第二步:项目中引入 3. 组件详解 1. 背景 最近研究一款桌面端应用的开发框架electron-vue,在按照 electron-vue官方文档 操作之后操作如下,Object.fromEntries is not a funct…

抖音seo源码搭建,抖音矩阵系统源码分发,抖音矩阵同步分发

前言:抖音seo源码,抖音矩阵系统源码搭建,抖音矩阵同步分发。抖音seo源码部署是需要对接到这些正规接口再来做开发的,目前账号矩阵程序开发的功能,围绕一键管理多个账号,做到定时投放,关键词自动…

腾讯云服务器端口怎么全开?教程来了

腾讯云服务器端口怎么全开?云服务器CVM在安全组中设置开通,轻量应用服务器在防火墙中设置,腾讯云百科来详细说下腾讯云服务器端口全开放教程: 目录 腾讯云服务器端口全部开通教程 云服务器CVM端口全开放教程 轻量应用服务器开…

一文学会TypeScript

TypeScript笔记 文章目录 TypeScript笔记[toc]第一章 TypeScript简介1.1、TypeScript简介1.2、TypeScript安装1.3、TypeScript项目初始化1.4、Hello TypeScript 第二章 TypeScript数据类型2.1、TypeScript的类型2.2、字面量类型2.3、联合类型2.4、any 与 unknown2.5、类型断言2…

5.1 因特网概述

5.1 因特网概述 我们知道因特网是一个很大的互联网,它由大量的通过路由器互联起来的物理网络构成,我们下思考几个问题 为什么因特网要考虑包容多种物理网络技术呢? 因为价格低廉的局域网只能够提供短距离的高速通信,而能够跨越长…

渲大师云主机按量付费功能上线!

云主机可以提供强大的计算和存储能力,通过使用云主机,政企办公、视觉设计、影视制作和深度学习领域的专业人士可以获得更大的灵活性、可扩展性和计算能力,提高工作效率和效果。 然而,当我们在选择和使用云主机时,需要…

如何优雅的在SpringBoot中编写选择分支,而不是大量if else?

一、需求背景二、创建项目三、基础工作四、定义 Handler 类五、实现员工接口六、功能测试6.1 开发控制器6.2 功能测试 七、总结 一、需求背景 部门通常指的是在一个组织或企业中组成的若干人员,他们共同从事某一特定工作,完成共同的任务和目标。在组织或…

Logisim 头歌 偶校验解码电路设计 图解及代码(计算机组成原理)

努力是为了不平庸~ 学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。 急的同学请直接点击目录跳到下方解答处!! 目录 图解:​编辑 代码题解(免费)&#x…