Spring框架-----ioc

news2024/11/13 8:59:16

基本概念

Spring 是一个轻量级的,IOC和AOP的一站式Java 开发框架,是为了简化企业级应用开发而生的

轻量级:框架核心模块体积小

IOC:Inversion of Control(控制反转)把创建对象的控制权反转给Spring框架管理

以前我们程序中需要对象时都是程序员自己进行新建

AOP:Aspect Oriented Programming面向切面编程

将程序中一些公共的非业务的代码进行分离提取,然后在业务代码执行时,把这些非业务代码横切进入执行,这使用了动态代理机制实现,业务代码在不显示的调用时会通过代理对象调用非业务对象

一站式:除了核心的功能之外,还对数据访问层和web层都进行了封装

spring框架的搭建

1.创建一个普通的moven工程

 2.导入spring框架最基础的jar包(在pom.xml中导入jar包,完成后可以在External Libraries中查看到导入的6个jar包)

 3.在resorce中创建一个文件,在该文件中对spring框架进行最基础的配置(配置中xsd文件对该配置文件中可以编写的类进行限制)

 4.创建你的java程序的基本结构,例如在以下代码中在java下创建model包,在其中创建一个实现类Admin,并在实现类中定义相应的方法和变量,并重写其中的get,set,有参构造方法(重写有参构造方法是必须重写无参构造方法),Admin类的创建,将用于后续对spring框架功能的测试

5.继续我们创建相应的包test,在该包中创建相应的测试类对spring框架的功能进行测试(如下图所示,我们创建了相应的测试类,但在该类中所写的代码为我们为学习spring前使用相应实现类时需要先创建类的对象,然后通过类的对象调用类中的方法)

6.如果我们需要spring框架对我们创建的实现类进行管理,我们需要在spring。xml中对我们所要管理的类进行配置(下面代码展示的配置中id需要我们自己进行命名,class需要写入我们所要管理的类的全类名)

7.完成相应的配置后,我们就可以在测试类中通过spring框架进行调用配置后的实现类并使用

id 属性需要我们自主进行命名,即是我们对该类创建对象的名称,class属性指我们需要操作的类的全名   
使用 bean标签操作需要spring管理的类的,利用getBean可以获得spring生成的对象  
scope属性配置的是bean的作用域(范围)     
scope="singleton" 默认取值  单例的   在spring框架启动时就创建对象,只会创建一次    
scope="prototype" 原型的(多例的)   在spring每次获得对象时都会创建一个对象

Spring bean 管理

基于xml生配置的方式(介绍scope,运行结果为当选择原型的时候,创建的两个Admin对象输出的结果) 

依赖注入 

IOC指的是让spring对象创建对象,创建对象的同时还有一个动作称为依赖注入 依赖注入是指在创建类对象时为对象的属性赋值
两种方式
1.通过属性注入(属性的set方法)

 2.通过构造方法注入

8.再次对Java程序进行扩展,创建新的包service和dao包,模拟后端程序与数据库进行交互

9.分别在对应的包里面创建相应的类

10.在adminService类中创建adminDao类的对象,并重写set和get方法

11.在xml文件中将类配置给spring进行管理,再对其进行依赖注入

12,在测试类中进行执行

 注解方式实现:

13.开启注解扫描

 14.在需要spring管理的类上方加上注解标签即可实现spring对类的管理与依赖注入

15.使用spring进行注入时,注入的类也必须被spring管理(例如使用注解标签对类AdminDao进行注入,AdminDao也必须被注解,即被spring管理)

16.对于@Autowired注解标签

@Autowired注解可以使用在属性或set方法前,当写在属性前时,我们就不需要在写该属性的set方法,对于该注解标签所标注的属性,一般要求传入的值不为null,如果我们想传入空值,必须设置@Autowired注解标签的require属性为false

@resource的用法与@Autowired类似

我们进行一些演示

 对于@Autowired注解的注入,我们有两种不同的注入方式

方法一:通过属性的类型进行查找,即是如上述代码所演示的,我们使用类型+命名的方式查询到对应的类,然后进行注入

方法二:我们通过对象的名字进行查找,需要用的相应的注解标签@Qualifier,同时我们也需要在对应类中进行命名

 

17.对于xml和注解两种方式进行spring管理的比较 

 

 

 

 

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

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

相关文章

Linux下构建Docker镜像

Docker在Linux构建镜像 Docker是一种轻量级的容器化技术,可以让开发者将应用程序及其所有依赖项打包到一个独立的容器中,从而实现跨平台和快速部署,在Linux系统上,我们可以使用D0cker来构建自己的镜像,并且可以通过简…

RocketMQ学习(三)

文章目录 1. 高级功能1.1 消息存储1.1.1 存储介质关系型数据库DB文件系统 1.1.2 性能对比1.1.3 消息的存储和发送1)消息存储2)消息发送 1.1.4 消息存储结构1.1.5 刷盘机制1)同步刷盘2)异步刷盘3)配置 1.2 高可用性机制…

软件设计之JavaWeb(1)

软件设计之JavaWeb(1) 此篇应在MySQL之后进行学习: 路线图推荐: 【Java学习路线-极速版】【Java架构师技术图谱】 尚硅谷全新JavaWeb教程,企业主流javaweb技术栈 资料可以去尚硅谷官网免费领取 此章节最好学完JDBC观看 学习内容: XML概述T…

excel翻译软件有哪些?如何高效提翻译?

你是否曾在面对满屏的英文Excel表格时感到头疼?项目报告、数据分析、财务报表... 当这些重要的信息被语言壁垒阻挡时,效率和理解度都会大打折扣。别担心,只需3分钟,我将带你轻松解锁excel翻译成中文的秘籍。 无论是职场新人还是…

解决浏览器自动将http网址转https

删除浏览器自动使用https的方式 在浏览器地址栏输入:chrome://net-internals/#hsts PS:如果是edge浏览器可输入:edge://net-internals/#hsts 在Delete domain security policies搜索框下,输入要删除的域名,然后点击delete 解决方法&#…

VMware中共享文件夹没了怎么办?

1.进入root su root 需要提前设置密码 sudo passwd root 2.创建一个hgfs文件夹,share就在这里面 sudo mkdir /mnt/hgfs/ 3.输入下面的命令 sudo mount -t fuse.vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other 4.然后就能找到share文件夹了,注意每…

CCF推荐B类会议和期刊总结(计算机网络领域)

CCF推荐B类会议和期刊总结(计算机网络领域) 在计算机网络领域,中国计算机学会(CCF)推荐的B类会议和期刊代表了该领域的较高水平。以下是对所有B类会议和期刊的总结,包括全称、出版社、dblp文献网址以及所属…

串口通信协议(UART)

简介 uart通讯协议,是一种成本低、容易使用、通信线路简单,可实现两个设备的互相通信的协议;是一种全双工,设备点对点通信的协议。下面从硬件电路、电平标准和串口参数等方面来了解uart通信协议。 硬件电路 硬件电路非常简单&am…

如何限制与管控员工上网行为?五个管控方法让员工效率倍增!

在现代企业中,互联网是工作中不可或缺的工具,但与此同时,员工在工作时间浏览与工作无关的网站、进行网络娱乐等行为,也成为了影响企业生产力和效率的主要因素之一。如何有效限制和管控员工的上网行为,从而提升工作效率…

利士策分享,逆境破局关键:精准策略

利士策分享,逆境破局关键:精准策略 在人生的征途上,逆境如同试炼场,考验着我们的智慧与勇气。 为了在这片试炼场上稳健前行,我们需要一套具体而精准的应对策略。 以下,是结合实践经验与智慧总结的应对策略…

机器意识的可能性:从计算功能主义到生物自然主义的思考

引言 近年来,人工智能(AI)的飞速发展引发了关于机器能否具备意识的激烈讨论。这个话题不仅涉及技术层面的挑战,还触及了哲学和神经科学的基本问题。Anil Seth教授作为意识研究领域的权威,他在近期发表的论文中提出了一…

ESP32-驱动ST7789显示

前言 一、TFT_eSPI库的安装 二、TFT_eSPI 的设置 1.文件的路径 2.User_Setup.h的设置 4.连线 三.显示 总结 前言 环境: 芯片:ESP32 软件:Arduino 一、TFT_eSPI库的安装 1.安装TFT_eSPI库,安装时注意安装内容不要错了 如果提示还有…

[数据集][目标检测]血细胞检测数据集VOC+YOLO格式2757张4类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2757 标注数量(xml文件个数):2757 标注数量(txt文件个数):2757 标注…

论文阅读:AutoDIR Automatic All-in-One Image Restoration with Latent Diffusion

论文阅读:AutoDIR: Automatic All-in-One Image Restoration with Latent Diffusion 这是 ECCV 2024 的一篇文章,利用扩散模型实现图像恢复的任务。 Abstract 这篇文章提出了一个创新的 all-in-one 的图像恢复框架,融合了隐扩散技术&#x…

Rust : 从事量化的生态现状与前景

Rust适不适合做量化工作? 一般地认为,目前大部分场景策略开发最佳是Python;策略交易和部署是C。但还是有人会问,Rust呢? 这个问题不太靠谱! 适不适合做一件事情,本身就是一件主观的事。即使是…

通信工程学习:什么是AN接入网络

AN接入网络 AN接入网络,全称Access Network,是电信部门业务节点与用户终端设备之间的实施系统。它可以部分或全部代替传统的用户本地线路网,并可包括复用、交叉连接和传输功能。以下是关于AN接入网络的详细解释: 一、AN接入网络的…

【数据结构入门】排序算法之交换排序与归并排序

前言 在前一篇博客,我们学习了排序算法中的插入排序和选择排序,接下来我们将继续探索交换排序与归并排序,这两个排序都是重头戏,让我们接着往下看。 一、交换排序 1.1 冒泡排序 冒泡排序是一种简单的排序算法。 1.1.1 基本思想…

Recyclerview Item 高度不同 统一最大高度

参考这篇: android - How to set recycler height to highest item in recyclerView? - Stack Overflowhttps://stackoverflow.com/a/67403957/13583023

解读三国历史中的配角们:探索未被书写的故事 - 《三国配角演义》读后感

在传统的三国叙事中,英雄主角们的事迹往往被无限放大,而那些默默无闻的小人物则被忽视。然而,《三国配角演义》通过挖掘历史细节,赋予这些小角色新的生命。书中用微小的史料合理推断,构建了他们不为人知的精彩故事。 …