1 Spring 模块构建

  1. 先创建一个 JDK 17 的 IDEA project,删除 src 目录。
  2. 然后创建一个 parent 为 Spring 6 的 Module。
    400
  3. 导入依赖
<dependencies>
<!--spring context依赖-->
<!--当你引入Spring Context依赖之后,表示将Spring的基础依赖引入了-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.0.2</version>
</dependency>
 
<!--junit5测试-->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.3.1</version>
</dependency>
</dependencies>
  1. 创建基础类,如 HelloWorld 类
  2. 在 resources 目录创建一个 Spring 配置文件(命名随意)
    • New XML 配置文件 Spring config
    • 添加 HelloWorld bean 配置
  3. 创建测试类
    • 见下面 2.4 节

2 Spring 第一个程序

2.1 创建 Maven 项目,引入依赖

创建 Maven 项目,在 pom.xml 中添加 Spring 框架依赖。

<dependency>
 <groupId>org.springframework</groupId>
 <artifactId>spring-context</artifactId>
 <version>5.3.11</version>
</dependency>

2.2 定义接口以及实现类

public interface HelloSpring {
    void sayHello();
}
public class HelloSpringImpl implements HelloSpring {
	@Override
	public void sayHello() {
		System.out.println("Hello Spring");
	}
}

2.3 创建 Spring 配置文件

resources/applicationContext. 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" xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- bean definitions here -->
 
    <!--将指定类配置给Spring,让Spring创建其对象的实例-->
    <!--id:标识符(别名) class:需要实例化的类路径-->
    <bean id="helloSpring" class="com.thr.HelloSpringImpl"></bean>
	<bean id="helloSpring1" class="com.thr.HelloSpringImpl"></bean>
	<bean id="helloSpring2" class="com.thr.HelloSpringImpl"></bean>
</beans>
 

<beans>
根标签,spring 把 java 对象称为 bean。

spring-beans.xsd
约束文件,和 mybatis 中的 dtd 一样。

<bean id="" class="" />
使用一个 <bean> 标签来标志一个 bean 对象。

id 为该对象的自定义名称,唯一值,spring 通过该值来找到对象。

class 为类的全限定名称,但是不能是接口(Spring 通过反射创建对象,必须使用类)。类的全限定名称,类文件右键-copy path-copy reference。
Spring 创建好对象后将其放到 map 中,类似 stringMap. Put (id, 对象)。

同一个类可以创建多个 Bean 对象,只要 id 值不同即可。

2.4 使用 Spring 创建并使用自定义对象

根据配置文件生成对象
Spring 创建对象的时间:在创建 Spring 容器时 (创建 ApplicationContext 对象时),创建所有 Bean 对象。可以通过在对象的构造函数中添加输出语句来检测到。
这种方法执行效率高 & 占内存。

//Spring方式:XML解析+反射+工厂模式
//1.初始化Spring容器,加载 Spring 配置文件
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
//2.通过容器获取helloSpring实例,getBean()方法中的参数是bean标签中的id
HelloSpring helloSpring1 = (HelloSpring) applicationContext.getBean("helloSpring");
//3.调用实例中的方法
helloSpring1.sayHello();

ApplicationContext. Class
读取 Spring 配置文件并创建 Spring 容器的接口,常用的实现类有 FileSystemXmlApplicationContext.classClassPathXmlApplicationContext.class,前者一般用于读取其他盘符中的文件/绝对路径,后者一般用于当前项目根目录文件读取。

getBean(id) 方法,根据 Bean 对象的 id,获得 Bean 对象,Object 返回,记得强转。
getBeanDefinitionCount() 方法,获得 Bean 对象的数量,int 返回。
getBeanDefinitionNames() 方法,获得 Bean 对象的名称,String[] 返回。