第一个Spring程序

目录

一、怎么创建Spring项目

1.1 使用maven创建Spring项目

1.2 导入Spring相关依赖

二、Spring的配置文件

三、使用Spring配置文件创建类对象

3.1 Spring核心api

3.2 Spring程序开发


一、怎么创建Spring项目

1.1 使用maven创建Spring项目

在创建新项目的时候使用maven去创建新项目,这样方便去导入Spring相关依赖

此时一个maven项目就创建好了,接下来就是导入Spring相关的依赖

1.2 导入Spring相关依赖

此时在项目中的pom.xml文件中导入相关的Spring依赖,这里选用的的Spring 5.x.x版本。这些版本可以在Maven的中央仓库查找复制Maven Repository: Search/Browse/Explore (mvnrepository.com)

<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.3.RELEASE</version>
</dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
<dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>5.2.3.RELEASE</version>
</dependency>

此时Spring项目就已经配置好了,接上回所说,Spring是一个强大的工厂,接下来就开始演示这个工厂的强大之处。

二、Spring的配置文件

Spring的配置文件就相当于一个工厂类,使用这个配置文件就不要自己主动去创建工厂类了。

首先在resource文件夹底下创建一个xml文件,这里的命名是没有要求的,但是后缀一定要是.xml

此时一个Spring的配置文件就创建好了,接下来就是使用这个配置文件去创建相应的类对象

三、使用Spring配置文件创建类对象

3.1 Spring核心api

  • ApplicationContext

        作用:Spring提供的ApplicationContext这个工厂,用于对象的创建

        好处:解耦合

        重量级资源:ApplicationContext工厂的对象占用大量的内存

        线程安全的:多线程并发访问

  • ApplicationContext接口类型

        非web环境的实现类:ClassPathXmlApplicationContext

        web环境的实现类:XmlWebApplicationContext

3.2 Spring程序开发

首先创建一个User类用于测试

public class User {private String name;private String password;public void setName(String name) {this.name = name;}public void setPassword(String password) {this.password = password;}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", password='" + password + '\'' +'}';}
}

对于之前获取User类对象的方式,我们可能会new 一个User类对象,或者自己写一个工厂类结合配置文件去加载一个类对象,但是在Spring中这些方式对不需要了!直接使用Spring提供的接口获取类对象!在配置文件中创建一个Bean标签,这里的id是这个类的唯一标识,名字随便起。后面的class是这个类的类路径,其实也就是通过这个类路径利用反射创建对象。

public void test() {// 这里直接使用Spring提供的接口去创建类对象了ApplicationContext ctx =// 这里的原理就是创建一个工厂类,只不过Spring封装好了// 这个文件名就是创建的Spring的配置文件名,名字可不敢错!new ClassPathXmlApplicationContext("applicationContext.xml");// 通过这个工厂获取类对象,这个user就是bean标签中的id(一定是要存在的)User user = (User) ctx.getBean("user");user.setName("张三");user.setPassword("123456");System.out.println(user);
}

成功获取到User类对象 

其实所谓的框架并没有想象中的那么高级,就是将平时常用的代码进行了封装,简化了开发过程。以上就是第一个Spring的程序了,利用Spring的接口来获取对象,那么这个获取对象的原理是什么呢?其实代码上面的注解也有解释,但是为了更加直观的展示,下面用一幅图来展示过程

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

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

相关文章

DDoS检测防御实现方案

流量采集模式 通过分光器将流量直接镜像到攻击检测器&#xff0c;收包采用DPDK库。 当前整机流量、源IP信息、连接数 、连接内容(五元组等)的信息汇聚 当发生告警时采样原始数据包&#xff0c; 采用固定采样算法 基于检测对象的TCP syn ack psh ack established的个数、流量…

系统架构师备考倒计时19天(每日知识点)

软件架构评估&#xff08;ATAM&#xff09; 在SAAM的基础上发展起来的&#xff0c;主要针对性能、实用性、安全性和可修改性&#xff0c;在系统开发之前&#xff0c;对这些质量属性进行评价和折中。ATAM方法的主要活动领域包括&#xff1a; 第一阶段 场景和需求收集 收集场景…

NLP算法面经 | 腾讯 VS 美团

作者 | 曾同学 编辑 | NewBeeNLP 面试锦囊之面经分享系列&#xff0c;持续更新中 后台回复『面试』加入讨论组交流噢 lz从3月初脚因打球扭伤了开始&#xff0c;投递简历&#xff0c;接二连三的面试鞭尸又面试&#xff0c;昨天才终于上岸了&#xff0c;分享经验~ 腾讯PCG看点&…

动态规划-买卖股票系列

121.买卖股票的最佳时机 Python: class Solution(object):def maxProfit(self, prices):""":type prices: List[int]:rtype: int"""if len(prices)0:return 0dplen(prices)*[0]minpriceint(prices[0])for i in range (1,len(prices)):minprice…

element plus 的图片上传组件回显

element图片回显是通过修改file-list属性的url属性实现的。 <!-- 图片上传 --><el-form-item label"景区图片" prop"s_img"><el-uploadlist-type"picture-card":action"网址":on-change"handleChange":befor…

【Python-Django】基于TF-IDF算法的医疗推荐系统复现过程

复现步骤 step1&#xff1a; 修改原templates路径&#xff0c;删除&#xff0c;将setting.py中的路径置空 step2&#xff1a; 注册app python manage.py startapp [app名称]在app目录下创建static和templates目录 step3&#xff1a; 将项目中的资源文化进行拷贝 step4&#…

新能源电池试验中准确模拟高空环境大气压力的解决方案

摘要&#xff1a;针对目前新能源电池热失控和特性研究以及生产中缺乏变环境压力准确模拟装置、错误控制方法造成环境压力控制极不稳定以及氢燃料电池中氢气所带来的易燃易爆问题&#xff0c;本文提出了相应的解决方案。方案的关键一是采用了低漏率电控针阀作为下游控制调节阀实…

《省级国土空间规划编制技术规程》国家标准(GB/T 43214-2023)原文下载

《省级国土空间规划编制技术规程》国家标准&#xff08;GB/T 43214-2023&#xff0c;以下简称《规程》&#xff09;&#xff0c;将于2024年1月1日起实施&#xff0c;该《规程》由市场监管总局&#xff08;国家标准委&#xff09;9月7日批准发布。 《规程》由自然资源部组织编制…

Steam将强制执行短信验证以遏制肆虐的恶意更新

为应对最近爆发的恶意更新&#xff0c;著名游戏平台Steam出品方Valve近日发布公告称&#xff0c;将为Steam 上发布游戏的开发者实施额外的安全措施&#xff0c;包括基于短信的确认码。 游戏及软件开发商在 Steam 平台上分发其产品需要用到Steamworks&#xff0c;它支持DRM&…

GEO生信数据挖掘(九)WGCNA分析

第六节&#xff0c;我们使用结核病基因数据&#xff0c;做了一个数据预处理的实操案例。例子中结核类型&#xff0c;包括结核&#xff0c;潜隐进展&#xff0c;对照和潜隐&#xff0c;四个类别。第七节延续上个数据&#xff0c;进行了差异分析。 第八节对差异基因进行富集分析。…

LeetCode 260. 只出现一次的数字 III:异或

【LetMeFly】260.只出现一次的数字 III 力扣题目链接&#xff1a;https://leetcode.cn/problems/single-number-iii/ 给你一个整数数组 nums&#xff0c;其中恰好有两个元素只出现一次&#xff0c;其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返…

数据分析案例-基于snownlp模型的MatePad11产品用户评论情感分析(文末送书)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

Android 内容提供者和内容观察者:数据共享和实时更新的完美组合

任务要求 一个作为ContentProvider提供联系人数据另一个作为Observer监听联系人数据的变化&#xff1a; 1、创建ContactProvider项目&#xff1b; 2、在ContactProvider项目中用Sqlite数据库实现联系人的读写功能&#xff1b; 3、在ContactProvider项目中通过ContentProvid…

深度学习-卷积神经网络

文章目录 应用卷积神经网络卷积处理分类问题 应用 图片分类图片检索图片分割图片风格迁移姿态估计OCR等 卷积神经网络 核概念计算机视觉中处理图片的核大小是通过经验得来的&#xff0c;而深度学习中的权重大小是自己学习出的。卷积VS神经网络&#xff1a;一个是局部观察一个…

Go-Python-Java-C-LeetCode高分解法-第十周合集

前言 本题解Go语言部分基于 LeetCode-Go 其他部分基于本人实践学习 个人题解GitHub连接&#xff1a;LeetCode-Go-Python-Java-C 欢迎订阅CSDN专栏&#xff0c;每日一题&#xff0c;和博主一起进步 LeetCode专栏 我搜集到了50道精选题&#xff0c;适合速成概览大部分常用算法 突…

【基于windows desktop上的docker配置nacos,并采用宿主机访问】

1、拉取镜像&#xff08;以下命令全部基于powershell&#xff09; docker pull nacos/nacos-server2、启动容器 docker run -d -e PREFER_HOST_MODEhostname -e MODEstandalone -e JVM_XMS256m -e JVM_XMX256m -e JVM_XMN128m -p 8848:8848 --name nacos --restartalways nac…

【2】c++11新特性(稳定性和兼容性)—>超长整型 long long

c11标准要求long long整型可以在不同的平台上有不同的长度&#xff0c;但是至少64位&#xff0c;long long整型有两种&#xff1a; 有符号long long&#xff1a;–对应类型的数值可以使用LL或者ll后缀 long long num1 123456789LL; long long num2 123456789ll;无符号unsign…

LeetCode 376. 摆动序列

最长递增子序列 题目链接: 376. 摆动序列 题目描述: 如果连续数字之间的差严格地在正数和负数之间交替&#xff0c;则数字序列称为 **摆动序列 。**第一个差&#xff08;如果存在的话&#xff09;可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。 例如…

ArcGIS笔记8_测量得到的距离单位不是米?一经度一纬度换算为多少米?

本文目录 前言Step 1 遇到测量结果以度为单位的情况Step 2 简单的笨办法转换为以米为单位Step 3 拓展&#xff1a;一经度一纬度换算为多少米 前言 有时我们会遇到这种情况&#xff0c;想在ArcGIS中使用测量工具测量一下某一段距离&#xff0c;但显示的测量结果却是某某度&…

acwing算法基础之数据结构--双链表

目录 1 知识点2 模板 1 知识点 一般的结构体写法为&#xff0c; struct BiListNode {int val;BiListNode *left;BiListNode *right; };但我们不用这个&#xff0c;而用数组模拟双链表&#xff0c;此时&#xff0c;用编号为0的结点表示头结点&#xff0c;用编号为1的结点表示尾…