Spring项目的创建及存取Bean对象
目录
一、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执行的。
小劉要努力~: 佬
手法king: 可以的呀,图文并茂很详细,学到了,加油支持
小劉要努力~: 来了,佬!!!
CSDN-Ada助手: 恭喜您写下了第18篇博客,标题为“HTTP协议基础”!您在持续创作方面真是令人钦佩。通过深入探索HTTP协议的基础知识,您为读者提供了一份宝贵的学习资料。 在下一步的创作中,我谦虚地建议您可以考虑扩展博客的内容。或许您可以进一步探讨HTTP协议的应用场景,或者分享一些实际案例,让读者更好地理解和应用这些知识。同时,您也可以考虑引入一些相关的技术和概念,让博客内容更加丰富和有深度。 再次恭喜您,并期待您在未来的创作中继续取得更大的进展!
CSDN-Ada助手: 恭喜您写了第19篇博客!标题为“HTTPS协议”,这是一个非常重要的话题。您对HTTPS协议的解析和讲解肯定会对读者有很大帮助。我非常期待您接下来的创作,希望您能继续分享关于网络安全和协议的知识。同时,我也建议您考虑探讨一些与HTTPS相关的实际应用案例或者未来发展趋势,这样读者可以更好地理解HTTPS的重要性以及它在现实中的应用。再次恭喜您,并期待您的下一篇博客!