Spring项目的创建及存取Bean对象

本文详细介绍了如何在Spring框架下创建Maven项目,配置Spring配置文件,添加Bean对象,以及区分ApplicationContext和BeanFactory的使用。重点讲解了如何存储和获取Bean对象,以及两者在性能和功能上的差异。
摘要由CSDN通过智能技术生成

目录 

前言

一、Spring项目的创建

1.1、创建一个maven项目

1.2、创建相应的目录和配置文件

1.3、在pom.xml中引入相应的spring依赖

1.4、重新加载一下maven项目

1.5、添加启动类 

1.6、一个很重要的注意事项!!!

二、存储Bean对象

2.1、创建Bean

2.2、存储Bean到Spring中

三、获取并使用Bean对象

四、ApplicationContext和BeanFactory区别

前言

        本篇博客主要介绍Spring如何创建一个Spring项目和如何往Spring中存放对象和取出对象,以及Beanfactory和ApplicationContext的区别。

一、Spring项目的创建

1.1、创建一个maven项目

 

1.2、创建相应的目录和配置文件

        我们需要在resource目录下创建一个Spring的配置文件,命名的话理论上我们是可以随便命名的,但是一般要取一个有意义的名字。这里我取的名字是spring-config.xml。

spring的配置文件需要添加以下固定内容:(这个内容是固定的

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:content="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">
</beans>

1.3、在pom.xml中引入相应的spring依赖

<dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.3.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.2.3.RELEASE</version>
        </dependency>
</dependencies>

1.4、重新加载一下maven项目

        配置完成之后,可能会出现引入的依赖是标红的状况,这时候就是因为本地没有相应的jar包,要去远程的仓库上下载(一般配置国内源之后,在20-30s之内就可以下载下来)。 

1.5、添加启动类 

最后在创建好的项⽬ java ⽂件夹下创建⼀个启动类,包含 main ⽅法即可;

这里我们创建一个App类作为启动类(也就是包含main方法的类):

到这里之后,一个Spring项目就创建好了。

1.6、一个很重要的注意事项!!!

        要自己注意自己本地下载的JDK版本,在pom.xml中要把JDK的版本写对,否则有时候项目运行时会报错,且这种错误很难排查,不好确定。

二、存储Bean对象

        到这一步,我们已经将Spring项目创建出来了,这时候就可以开始编写Spring代码了,而在Spring中我们主要研究的是如何存储和取出对象。接下来开始介绍如何存储对象。

所谓的Bean对象,本质上就是Java中一个普通的对象。

2.1、创建Bean

所谓创建Bean,就是创建一个类,这个类的对象就称为Bean。

这里我们就创建一个简单的类来演示:我们创建一个UserService类,并写一个sayHi()方法:

2.2、存储Bean到Spring中

具体如何把对象存进去呢?接下来直接看代码:

总的来说:只要在spring配置文件中的beans标签中,加入一个<bean>标签中。

        其中id属性是用来设置这个Bean对象的名称,以后获取的时候需要根据名字来获取,class属性就是设置对应的对象的位置,包名开始到那个类的具体路径;

到这里,我们就成功的将一个类放入到Spring中了。

三、获取并使用Bean对象

        获取Bean对象的两个个步骤:①获取上下文对象(上下文对象也可以理解为就是拿到容器对象);②再通过上下文对象根据id或者类型再或者id+类型就可以获取到Bean对象。

第一步:获取上下文对象:

获取上下文对象的两种方法:

第一种:可使⽤ ApplicationContext,实现代码如下:

 第二种:使⽤ BeanFactory 来作为 Spring 的上下⽂:

第二步:使用上下文对象获取到Bean

        这里无论是使用ApplicationContext或者BeanFactory 获取到的上下文对象,都是可以通过getBean()方法来获取的,对于getBean()方法,可以传入以下不同的参数来获取到Bean对象:

第一种:只传入Bean对象的id,使用我们在spring配置文件中设置的Bean的id,来获取到Bean对象;(需要强制类型转换)

第二种:只传入Bean对象的类型,根据类型来获取Bean对象;(只能在同一个类型只存入一个对象的情况下使用该方法)

第三种:传入Bean对象的类型+id,根据类型来+id来获取;(推荐的写法,获取到唯一的Bean对象)

代码演示:

ApplicationContext的代码:

运行结果:

BeanFactory 的代码:

运行结果: 

四、ApplicationContext和BeanFactory区别

第一:ApplicationContext是BeanFactory的子类,它除了继承了 BeanFactory 的所有功能之外,它还拥有独特的特性, 还添加了对国际化⽀持、资源访问⽀持、以及事件传播等⽅⾯的⽀持;

第二:从性能方面来说,ApplicationContext是在项目启动时,一次性的将所有的Bean对象都加载并初识化,而BeanFactory则是需要哪个就加载哪个,不需要的话就不去加载,是更加轻量的。

代码演示第二点区别:

        我们在原有代码的基础上再加入一个Student类,并且设置一个构造方法,存入容器中,如下所示:

        使用BeanFactory来获取UserService对象,没有获取Student对象,可以看到执行结果并没有去加载Student对象

        使用ApplicationContext,这时候我们不去获取任何的Bean对象,就获取一下上下文对象,我们可以看一下代码执行结果:

        从代码运行的结果上来看,可以看出只要我们有去获取上下文对象,ApplicationContext就会将所有的Bean对象初始化,但是如果连上下文对象都没有获取的话,只有存对象进去的话,是不会初始化存进去的Bean对象的,间接说明了加载所有Bean对象是ApplicationContext执行的。

小白学编程~
关注 关注
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring 创建和使用 · 存储 bean 对象 · 获取并使用 bean 对象 · 关于配置文件 id 的注意事项 · getBean 方法的更多用法
sfg0861的博客
12-09 743
Spring 创建和使用 · 存储 bean 对象 · 获取并使用 bean 对象 · 关于配置文件 id 的注意事项 · getBean 方法的更多用法。操作容器之前,需要先获取容器。存对象创建 Bean(普通类);将 Bean 注册(配置)到 spring-config.xml 中。取对象。得到 Spring 上下文,并读取到 Spring 的配置文件。获取某个 Bean 对象。使用 Bean 对象
Spring】之注解存取Bean对象
weixin_73060900的博客
11-19 603
对五大类注解和方法注解的介绍,对注入方式及其注解的介绍。
Spring 项目创建过程及如何使用创建/获取 Bean
努力
06-24 3756
Spring入门级使用攻略,确定不进来看看?
Spring】-SpringBean对象存取
m0_63979882的博客
08-11 1362
spring中存储Bean对象的三大方式:XML方式(Bean标签);五大类注解;方法注解。从spring中取对象的两种方式:基本方法、注解方法(属性注入、set注入、构造方法注入)。
Spring存取Bean对象的相关注解
qq_62592809的博客
11-13 476
这是程序员在设计的时候考虑到搜索的效率而设计的,只有通过注解标识了哪些路径,Spring才认为被标记的路径中有可能有要存到容器中的Bean对象,Spring才会去搜索那些被标记的路径,不必全部路径都搜索一遍,这样就提高了效率,所以如果只标记方法注解,而没有类注解,Spring是不会来搜索这个类的,就更别提搜索它里面的方法了.但是Bean还有个问题,就是不能存储带参数的方法,因为在存储Bean对象的时候,我们没办法手动给它传参,所以无法存储进去,如果要传参可能得配合其他标签让他在存储的时候自动传参.
Spring IoC如何存取Bean对象
qq_62414152的博客
12-07 468
控制反转. 所谓控制, 就是控制对象的生命周期. 对象的生命周期由创建这个对象的类控制. 有时对控制权进行反转, 可以起到很好的编程效果, 从而完成特定的功能.例如: 创建了一个对象, 称为对象1, 对象1要依赖于对象2, 对象2要依赖于对象3.如果在对象1中创建对象2, 在对象2中创建对象3. (也就是对象3的控制权在类2中, 对象2的控制权在类1中)当改变一个类的构造方法时, 如在构造方法中增加参数, 同时也需要对依赖这个类的类中的代码进行修改.
Spring项目创建、存储和获取 Bean 的基本方式
yzhcjl_的博客
07-29 889
各位读者好, 我是小陈,这是我的个人主页, 希望我的专栏能够帮助到你:📕JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管理系统等📗Java数据结构: 顺序表, 链表, 堆, 二叉树, 二叉搜索树, 哈希表等📘JavaEE初阶: 多线程, 网络编程, TCP/IP协议, HTTP协议, Tomcat, Servlet, Linux, JVM等(正在持续更新)提示:是正在努力进步的小菜鸟一只,如有大佬发现文章欠佳之处欢迎批评指点~ 废话不多说,直接上干货!
SpringBean对象存取
qq_61903414的博客
03-27 252
id属性内容在后续获取bean对象的时候,通过该id属性的值进行获取,class属性就是要存入spring对象路径,如果我们把上述创建的User类存入Spring,就可以通过bean标签实现。通过方法注入的bean对象获取时,可以通过getbean(方法名,类对象)进行获取,但是如果在方法注入时bean注解使用了name属性,在获取时就不能通过方法名来获取,只能通过name属性的值来进行获取。上面我们在获取的时候是通过id进行获取User对象的,我们还有两种方法进行获取
【SSM】初识Spring & 存取Bean对象
爱干饭的猿的博客
07-31 511
我们通常说的Spring指的是SpringFramework(Spring框架)。一句话概括SpringSpring是包含了众多工具方法的loC容器。容器是用来容纳某种物品的(基本)装置。List/Map->数据存储容器Tomcat->Web容器Spring->IoC容器IoC(InversionofControl)指“控制反转”,也就是说Spring是一个“控制反转”容器。...
Spring入门操作代码,bean
08-20
这里的"bean"指的是在Spring容器中被管理的对象,通常是我们所说的Java对象或者说是业务层的实体类。在CRM系统中,这些bean可能对应着如客户信息管理模块的各种业务实体,比如Customer类。 新增客户信息:在Spring...
spring项目
05-26
标题中的“spring项目”指的是基于Spring框架开发的应用程序。Spring是一个开源的Java平台,它为构建企业级应用提供了全面的编程和配置模型。这个项目很可能是一个整合了多种Spring特性的完整应用,例如Spring MVC...
Spring实战之Bean定义中的SpEL表达式语言支持操作示例
08-25
Spring框架中,SpEL(Spring Expression Language)提供了一种强大且灵活的方式来查询和操作对象图。Spring Bean定义支持使用SpEL来配置属性和依赖关系,允许开发者通过表达式语言来设置属性值或者调用方法。 ###...
Spring Boot 如何实现Bean的刷新
BUG指挥课堂
06-06 3504
1. 从无到有 —— 了解Bean容器 首先得了解Scope(作用域),简单介绍两种。 1. singleton 单例类型 整个程序运行期间,Spring容器只会有一个对应类的Bean实例,不管被加载到哪里使用,都是一个实例对象。 曾经,我犯过一个错。将公用返回对象以默认的方式加载至Spring容器(笑) 2. prototype 原型类型 和单例相反,这种加载模式,Bean实例不管在哪里被获取,都不是同一个对象。 刚好可以解决上面,公用返回对象的问题(笑)(笑) 2. 如何实现 —— 建立
springboot项目打包后在终端运行显示没有主清单属性
最新发布
weixin_52236586的博客
10-20 111
注释pom文件中的这个。
如何防止SpringBoot中的jar反编译?解决相关报错及踩到的坑
apple_64847327的博客
10-20 1297
在单模块中使用此方案的话,还算是简单,但是如今的项目基本上都是多模块的,一个模块依赖多个公共的模块,这样的话,使用此方案就得不偿失了,不仅用起来比较麻烦,而且各模块之间的调用在是否混淆时也是极容易出错。最近要将项目部署到其它公司的服务器上,但是呢,又不想要将自己的源码给泄露出去,要求对正式环境的启动包进行安全性的处理,从而防止客户直接通过反编译工具将代码给反编译出来,这里有两个方案。这些工具可以通过重命名类、方法、变量等,删除注释和空格,代码优化等操作来达到混淆的效果,增加反编译的难度。
springsecurity使用
ghx123456ghx的博客
10-17 308
首先进入免登录的首页,当点击链接进入受到保护页面时,此时因没有登录,页面自动跳到登录页面,在登录页面输入有USER角色的账号时,自动跳到请求的href="/user/index"后台。2 springsecurity配置。3 登录跳转被保护页面流程。
Springboot整合knife4j生成文档
Think_and_work的博客
10-16 393
null
JavaWeb合集05-SpringBoot基础知识
qq_57340195的博客
10-17 932
Autowrite :自动装配,通过声明的数据类型来装配对应的bean对象。缺点,只能获取到一个相同类型的bean对象,如果有IOC容器里面有2个Bean对象,使用@Autowrite依赖注入就好报错。由于三层架构中,每一层都需要下次成来提供对应的方法,所有要new 下一次的对象,如果上一层的类名发送改变,那么上一层就需要修改对应的类名,如下。3、@Resource注解:通过它来代替@Autowrite注解,直接指定要注入的Bean对象,参数name的值就是要注入的Bean对象
车辆管理的SpringBoot技术革新
2401_85760095的博客
10-18 1041
目前,界面设计已经成为对软件质量进行评价的一条关键指标,一个好的用户界面可以使用户使用系统的信心和兴趣增加,从而使工作效率提高,JSP技术是将JAVA语言作为脚本语言的,JSP网页给整个服务器端的JAVA库单元提供了一个接口用来服务HTTP的应用程序。B/S架构给使用管理系统的用户带来极大的便利。6、网络上的客户端和服务器可以用来编程任何独立的编程环境,也有中国,GB2312,BIG5,日文写作,一般基金,用于支持多国语言,并且可以嵌入在数据表和其他软件shift_jis访问柱可以用作的名称。
Redis对象与集合存储实战:存取详解
本文主要介绍了如何使用Redis存储对象和集合,包括如何配置Redis连接、设置Jedis客户端,并通过示例展示了具体的存储和读取操作。此外,还提到了Redis在项目中的重要性,作为缓存可以减轻数据库压力,提高性能,而...
写文章

热门文章

  • Mybatis 实现简单增删改查 1680
  • 【JavaWeb】Tomcat的配置与初识Servlet 1577
  • Spring Boot 统一功能处理 1433
  • TCP 协议八大核心工作机制 1201
  • 配置Maven项目国内源 935

最新评论

  • Mybatis 实现简单增删改查

    小劉要努力~: 表情包

  • Spring Boot 日志文件

    手法king: 可以的呀,图文并茂很详细,学到了,加油支持

  • Spring项目的创建及存取Bean对象

    小劉要努力~: 表情包来了,佬!!!表情包

  • HTTP协议基础

    CSDN-Ada助手: 恭喜您写下了第18篇博客,标题为“HTTP协议基础”!您在持续创作方面真是令人钦佩。通过深入探索HTTP协议的基础知识,您为读者提供了一份宝贵的学习资料。 在下一步的创作中,我谦虚地建议您可以考虑扩展博客的内容。或许您可以进一步探讨HTTP协议的应用场景,或者分享一些实际案例,让读者更好地理解和应用这些知识。同时,您也可以考虑引入一些相关的技术和概念,让博客内容更加丰富和有深度。 再次恭喜您,并期待您在未来的创作中继续取得更大的进展!

  • HTTPS协议

    CSDN-Ada助手: 恭喜您写了第19篇博客!标题为“HTTPS协议”,这是一个非常重要的话题。您对HTTPS协议的解析和讲解肯定会对读者有很大帮助。我非常期待您接下来的创作,希望您能继续分享关于网络安全和协议的知识。同时,我也建议您考虑探讨一些与HTTPS相关的实际应用案例或者未来发展趋势,这样读者可以更好地理解HTTPS的重要性以及它在现实中的应用。再次恭喜您,并期待您的下一篇博客!

最新文章

  • Spring Boot 统一功能处理
  • Spring AOP
  • Mybatis之动态SQL
2023年31篇
2022年5篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家吕梁玻璃钢仿铜雕塑信阳玻璃钢雕塑工艺商场玻璃钢雕塑价格广西校园玻璃钢雕塑无锡定做玻璃钢造型雕塑招远玻璃钢动物雕塑呼和浩特人物玻璃钢雕塑定做商场内假花做美陈西宁玻璃钢雕塑砖雕牡丹江玻璃钢雕塑厂永宁玻璃钢雕塑加工陕西景区玻璃钢雕塑生产厂家焦作玻璃钢马雕塑肇庆玻璃钢雕塑生产玻璃钢酒店人物雕塑选哪家清远名贵的玻璃钢雕塑河南附近玻璃钢仿铜雕塑生产青海玻璃钢卡通雕塑分类天津玻璃钢景观雕塑定制三门峡玻璃钢景观雕塑制作厂家卡通雕塑玻璃钢有哪些深圳玻璃钢卡通雕塑厂家舟山抽象玻璃钢雕塑批发濮阳肖像玻璃钢卡通雕塑南通玻璃钢鹿雕塑云南商场美陈公司汕头玻璃钢苹果雕塑特色玻璃钢花盆市场玻璃钢公仔雕塑价格表玻璃钢雕塑观音像香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化