传统Spring项目的创建和使用xml文件来保存对象和取对象## 传统Spring项目的创建

一、创建一个maven项目(maven项目无需使用模板)

Springboot 根据xml模板生成xml spring创建xml文件_xml


Springboot 根据xml模板生成xml spring创建xml文件_User_02

二、导入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>

Springboot 根据xml模板生成xml spring创建xml文件_xml_03

三、创建一个启动类

Springboot 根据xml模板生成xml spring创建xml文件_xml_04

如何将对象保存到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"))

Springboot 根据xml模板生成xml spring创建xml文件_spring_05

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)

总结

Springboot 根据xml模板生成xml spring创建xml文件_User_06