Skip to content

Spring入门

1. 环境要求

  • JDK:Java17+(Spring6要求JDK最低版本是Java17)
  • Maven:3.6+
  • Spring:6.0.23

2. 入门开发步骤

  1. 创建spring工程
  2. 引入spring相关依赖
  3. 创建类,定义属性和方法
  4. 按照spring要求创建配置文件,并配置相关信息
  5. 完成编码和测试

3. 构建工程模块

3.1 构建父模块spring-demo

  1. 在idea中,依次单击 File -> New -> Project -> New Project
    Alt text
  2. 点击"Create"
    Alt text
  3. 删除src目录

3.2 构建子模块spring6-first

Alt text

4. 引入依赖

在spring6-first模块的pom.xml文件中添加以下依赖:

xml
<dependencies>
    <!--spring context依赖-->
    <!--当你引入Spring Context依赖之后,表示将Spring的基础依赖引入了-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>6.0.23</version>
    </dependency>
    <!--junit5测试-->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-api</artifactId>
        <version>5.10.5</version>
    </dependency>
</dependencies>

查看依赖:
Alt text

4. 创建java类

创建包com.rocket.spring,在里面创建类HelloWorld:

java
public class HelloWorld {

    public void sayHello(){
        System.out.println("helloworld");
    }
}

5. 创建配置文件

在resources目录创建一个Spring配置文件beans.xml(配置文件名称可随意命名,如:springs.xm),idea支持直接创建spring的配置文件:
Alt text 配置如下:

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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <!--
    配置HelloWorld所对应的bean,即将HelloWorld的对象交给Spring的IOC容器管理
    通过bean标签配置IOC容器所管理的bean
    属性:
        id:设置bean的唯一标识
        class:设置bean所对应类型的全类名
	-->
    <bean id="helloWorld" class="com.rocket.spring.HelloWorld"></bean>
</beans>

6. 编码测试

编写单元测试类HelloWorldTest:

java
public class HelloWorldTest {

    @Test
    public void testHelloWorld(){
        // 加载spring配置文件,创建对象
        ApplicationContext ac = new ClassPathXmlApplicationContext("beans.xml");
        // 获取创建的对象
        HelloWorld helloworld = (HelloWorld) ac.getBean("helloWorld");
        // 调用对象方法
        helloworld.sayHello();
    }
}

运行测试程序:
Alt text

7. 总结

dom4j解析beans.xml文件,从中获取class属性值,类的全类名, Spring会通过类名加载该类(Class.forName()方式),然后通过反射机制调用无参数构造方法,bean对象最终存储在Spring容器中,在Spring源码底层就是一个map集合,存储bean的map在DefaultListableBeanFactory类中:
Alt text Spring容器加载到Bean类时, 会把这个类的描述信息,以包名加类名的方式存到beanDefinitionMap中, Map<String,BeanDefinition>, 其中Key是类名首字母小写, BeanDefinition存的是类的定义(描述信息) , 我们通常叫BeanDefinition接口为 : bean的定义对象。