传统Spring项目的创建和使用xml文件来保存对象和取对象## 传统Spring项目的创建
一、创建一个maven项目(maven项目无需使用模板)
二、导入Spring依赖(Spring Context依赖和Spring Beans依赖)
可以从maven仓库获取,也可以从这里获取
<!-- 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容器中对象是用bean 表示
第一步:创建一个bean(对象)
第二步:在resources包里创建一个spring-config.xml文件,并且配置spring-config.xml文件
<?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>
第三步:将bean注册到Spring容器中
<bean id="注册到Spring中对象的名字(可以自己取)" class="注册到Spring中对象的路径(包名+类名)"></bean>
如何从Spring容器中取bean对象
首先,我们需要获取到Spring容器的上下文对象
获取方法有两种:
【方式一】 **(建议使用)**使用ApplicationContext接口和ClassPathXmlApplicationContext类(ClassPathXmlApplicationContext类是ApplicationContext接口的子类)
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("Spring配置文件的名称")
【方式二】使用BeanFactory接口和XmlBeanFactory类(XmlBeanFactory类是BeanFactory接口的子类)和ClassPathResource类
BeanFactory applicationContext = new XmlBeanFactory(new ClassPathResource("spring-config.xml"))
ApplicationContext接口和BeanFactory接口的异同
相同点:ApplicationContext接口和BeanFactory接口都是可以获取到Spring容器的上下文,并且完成获取Spring容器里的对象,所表示的效果差不多
不同点:
在继承关系和功能方面:ApplicationContext接口是BeanFactory接口的子类,ApplicationContext接口继承了BeanFactory接口的所有功能和能力。BeanFactory接口只具备最基本的访问Bean的能力,而ApplicationContext接口除了这个能力外,还有了对国际化⽀持、资源访问⽀持、以及事件传播等⽅⾯的⽀持。ApplicationContext接口的功能更加强大。
**在性能和加载方式方面:**BeanFactory是按需求加载bean(懒汉式加载),而ApplicationContext则是一次性加载全部的bean(饿汉式加载)
获取到Spring上下文对象后,我们可以通过getBean()方法来获取对象
Spring上下文对象的getBean()方法有很多重载方法,这里介绍三种常用的:
【第一种通过bean的id名称来获取bean】
User user = (User) applicationContext.getBean("user");
注意:参数里的字符串内容要用spring-config.xml配置文件的bean的id名称一样
【第二种通过类型来获取bean】
User user = applicationContext.getBean(User.class)
【第三种通过bean的id名称和类的类型来获取bean】 (强烈推荐使用)
User user = applicationContext.getBean("user",User.class)