Spring框架的介绍、工厂设计模式以及Spring环境的搭建

news2024/12/24 21:59:25

spring崇尚:不重复的造轮子

二、工厂设计模式


工厂设计模式:工厂生产对象(配置文件properties+反射)

Spring创建对象的实现原理:

根据配置文件的id得到对应的class属性值,根据反射,通过类全路径创建对象;

通过配置文件,通过工厂设计模式,有反射动态创建对象

具体步骤为:

1 创建一个小配置文件a1.properties、放在src下

key=value

username=hr

password=hr

2 利用流读取小配置文件

InputStream is = Xxx.class.getResourceAsStream(“/a1.properties”);

3 创建Properties的对象,加载读取的输入流

Properties pro = new Properties();

pro.load(is)

1.4 根据key获取value

String value = pro.getProperty(“username”);

Spring 框架就利用工厂设计模式对Service和DAO进行解耦合

何为工厂:创建管理对象的容器

思路:将对象的创建交给工厂完成,工厂读取小配置文件,获取要创建对象的全限定名,利用反射创建类的对象并发返回给调用者

  1. 编写小配置文件,存放需要由工厂创建对象的全限定名

  2. 创建一个类BeanFactory (对象工厂,工厂设计模式的核心类)

bean(对象) Factory(工厂)

1.1 使用静态代码块加载读取小配置文件

1.2 创建一个方法创建开发者需要的对象

如下图所示:

工厂类的创建

  1. 在业务逻辑层中,将自己创建对象的代码删掉,交给工厂创建

在这里插入图片描述

如此,就把我们的Service和Dao进行了解耦合,使得Dao实现类的创建不再在程序中创建,而是通过读取配置文件来创建。这样的解耦合使得程序更灵活,

三、搭建Spring开发环境


1.1 添加jar包,

搭建一个基础的Spring环境所需要的最基础的jar包有以下几个:

搭建spring环境所需的jar包

1.2 添加配置文件applicationContext.xml,放在src下

1.3 配置applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/bean

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-89JdcYon-1670239903517)(https://mmbiz.qpic.cn/mmbiz_png/nMicohCxH9r2BPjylgQTOxQFBMTBcucNMZpohd3FpUkGsDf2wzGZa3cjx7icEg6dCMg15vGibA9Q8C21s6CdL6K0g/0?wx_fmt=png)]

s"

xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans.xsd">

1.4 创建spring工厂,获取对象

import com.macw.entity.Person;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test1 {

public static void main(String[] args) {

//需求:获取Person这个类的对象

//1.创建spring工厂 参数:写appliactionContext.xml文件的路径

//classpath(类路径): src就是classpath路径的根

ClassPathXmlApplicationContext ac =

new ClassPathXmlApplicationContext(“classpath:applicationContext.xml”);

//2.从spring工厂中获取Person类的对象

//参数:bean标签的id

Person person = (Person) ac.getBean(“p1”);

System.out.println(person);

}

四、spring创建对象的时机和次数


时机:什么时候创建这个类的对象?

次数:它是单例还是多例?

bean标签有一个属性:

System.out.println(person);

}

四、spring创建对象的时机和次数


时机:什么时候创建这个类的对象?

次数:它是单例还是多例?

bean标签有一个属性:

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

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

相关文章

matlab knn方法快速实现,手把手教学

目录介绍话不多说&#xff0c;进入实战注意事项KNN算法的优势和劣势介绍 1968年&#xff0c;Cover和Hart提出K近邻算法。该算法既可以用于回归也可以用于分类&#xff0c;其用于分类时其输入为实例的特征向量&#xff0c;输出为实例的类别。假设给定一个训练数据集&#xff0c…

PsiQuantum宣布在容错量子计算架构方面取得新突破

&#xff08;图片来源&#xff1a;网络&#xff09; 12月2日&#xff0c;PsiQuantum宣布了一项突破性技术&#xff0c;该技术将使编译应用程序在运行时效率提高约50倍。可以更有效地实现容错量子计算。 该技术专门针对容错量子计算机的算法&#xff0c;而不是非容错的NISQ系统。…

linux倒序查看占用cpu或内存最多的进程

一、获取当前系统占用CPU最高的前10个进程 命令&#xff1a;ps aux|head -1;ps aux|sort -rn -k3|head -10 该命令组合由2条独立的命令组成&#xff1a; ps aux|head -1&#xff1a;这一句是为了获取标题&#xff08;USER PID %CPU %MEN VSZ RSS TTY STAT START TIME COMMAND…

儿童学生护眼台灯哪个牌子好?双十二儿童护眼台灯精选

我国儿童以及青少年的近视人数迅速增加&#xff0c;主要是不注意用眼时间&#xff0c;不良好的照明光线&#xff0c;拥有一个明亮舒适的光线环境&#xff0c;能大大减少近视概率&#xff0c;推荐合适的儿童护眼台灯给大家。 TOP1&#xff1a;南卡护眼台灯L1 推荐指数&#xf…

每天一个面试题:ThreadLocal底层原理和实现Demo(12.6.2022)

ThreadLocal底层原理和实现Demo每天一个面试题&#xff1a;ThreadLocal实现ThreadLocal的DemoThreadLocal底层原理为什么ThreadLocalMap的key设计为弱引用今天开始一个新专栏&#xff1a;每天一个面试题系列 也没有拿到令人心动的offer&#xff0c;看来自己学习方式和能力还是差…

霸榜!这本《程序员如何向架构师转型》在Github已持续置顶两月

前言 企业架构在过去十年中取得了长足的进步。随着越来越多新技术出现&#xff0c;充分利用这些因素来将企业架构创建得更好十分重要。通过将新技术集成到企业架构中&#xff0c;即使在困难时期&#xff0c;也能取得丰硕的成果。现代企业架构师的 5 个特征&#xff1a; 1. IT…

PyQt利用QScrollArea+QGridLayout制作一个滑动的Grid布局(QT Designer)

目录前言制作ui文件推送结语前言 有需求需要做一个滑动的Grid布局结构&#xff0c;网上找了很多的文章都是介绍直接用代码去生成的&#xff0c;没有看到用QT Designer做好后再怎么处理&#xff0c;这里研究了一下&#xff0c;以作记录和参考 制作ui文件 新建一个MainWindow 我…

本周推荐 | 基于 canvas 实现 H5 丝滑看图体验

推荐语&#xff1a;随着机器算力及性能的提升&#xff0c;基于原生Web体系的富交互体验也可以媲美原生&#xff0c;本文作者通过Canvas Web手势从零实现了大图浏览的交互效果&#xff0c;并在体验上不输Native&#xff0c;是一次不错的技术尝试&#xff0c;欢迎阅读。——大淘…

家庭宽带相关知识及工具

1.FTTH、FTTR、FTTB FTTH&#xff0c;光纤到户&#xff0c;需要用到光猫&#xff0c;目前主流&#xff0c;最高到千兆(1G)&#xff0c;局域网内为网线(超五类、六类等)连接。 FTTR&#xff0c;光纤到房间&#xff0c;或者说是光纤到终端&#xff0c;全光网&#xff0c;最高到万…

技术分享| 音视频与微信小程序互通实践

随着网络架构的变迁、媒体技术发展、音视频场景迭代&#xff0c;基于流媒体的技术也是推陈出新。WebRTC渐渐的成为了音视频互动场景的主流&#xff0c;而微信在6.5.21版本通过小程序开放了实时音视频能力&#xff0c;开发者们可以使用组件 < live-pusher > 实现基于 RTMP…

计讯物联数字乡村解决方案全力助推三农信息化建设

​2020年&#xff0c;中央网信办等七部门联合印发《关于开展国家数字乡村试点工作的通知》。《通知》提出&#xff0c;做好数字乡村发展整体规划设计&#xff0c;统筹推进乡村的新型基础设施、数字经济、数字农业农村、农村科技创新、乡村数字治理、信息惠民服务等建设和发展。…

类的加载过程(类的生命周期)详解

类的加载过程&#xff08;类的生命周期&#xff09;详解 1. 概述 在Java中数据类型分为基本数据类型和引用数据类型。基本数据类型由虚拟机预先定义&#xff0c;引用数据类型则需要进行类的加载。 按照Java虚拟机规范&#xff0c;从class文件到加载到内存中的类&#xff0c;到…

python全局和局部变量以及引用和装饰器

学习笔记 bilibili千峰python global关键字的添加 只有不可变的类型才需要添加global可变的类型不需要添加global不可变类型&#xff1a;当改变变量的值时候&#xff0c;地址发生了改变 类型&#xff1a;int&#xff0c;str&#xff0c;float&#xff0c;bool&#xff0c;tup…

[Spring Boot 6]企业级开发

本节内容主要就几个常用的模块进行解读&#xff0c;在众多企业级开发中常常用得到。 例如邮件发送这一功能其实非常常见&#xff0c;在一般的网站设计中会有对注册邮件的激活功能&#xff0c;此时就需要用到这个功能了&#xff0c;一般来说激活邮件需要设置UUID 来进行验证&…

【Python入门】Python入门必备思维导图,有方向的学习才是最实在的方法

前言 halo&#xff0c;包子们下午好 这篇文章主要是跟大家聊聊我们学习Python该怎么去学习 小编个人认为&#xff0c;学习Python一定要有一个好的学习方向&#xff0c;这样才知道自己该往什么方向去学习 今天小编主要给大家准备了我们学习Python的必备14张思维导图 赶快收藏起…

【SSM整合】SpringMVC + Spring + Mybatis整合详细教程

前言 本文为 SpringMVC Spring Mybatis整合教程 相关详细介绍&#xff0c;从数据库数据准备、相关依赖包添加、创建项目基本结构和配置框架&#xff0c;到Mybatis层的编写、Spring层的编写、SpringMVC层的编写&#xff0c;再到前端页面编写等&#xff0c;最后进行运行与测试&…

新生报到小程序毕业设计,新生报到管理系统设计与实现,毕设作品参考

功能清单 【后台管理员功能】 广告管理&#xff1a;设置小程序首页轮播图广告和链接 留言列表&#xff1a;所有用户留言信息列表&#xff0c;支持删除 录入资讯&#xff1a;录入资讯标题、内容等信息 管理资讯&#xff1a;查看已录入资讯列表&#xff0c;支持删除和修改 学校…

MySQL——表的约束

文章目录表的约束空属性默认值列描述zerofill主键&#x1f60a;自增长唯一键&#x1f60a;外键&#x1f60a;表的约束 真正约束字段的是数据类型&#xff0c;但是数据类型约束很单一&#xff0c;需要有一些额外的约束&#xff0c;更好的保证数据的合法性&#xff0c;从业务逻辑…

前端给数字添加横线贯穿

效果 实现方法 1、给这个数字添加css属性&#xff1a;text-decoration: line-through; 2、给这个数字添加标签&#xff1a;del。如&#xff1a;<del>9999</del>。 text-decoration详解&#xff1a; text-decoration : none || underline || blink || overline |…

使用RMI实现RPC

1 RMI简介 RMI(Remote Method Invocation) 远程方法调用。 RMI是从JDK1.2推出的功能&#xff0c;它可以实现在一个Java应用中可以像调用本地方法一样调用另一个服务器中Java应用&#xff08;JVM&#xff09;中的内容。 RMI 是Java语言的远程调用&#xff0c;无法实现跨语言。…