Spring入门
1. 环境要求
- JDK:Java17+(Spring6要求JDK最低版本是Java17)
- Maven:3.6+
- Spring:6.0.23
2. 入门开发步骤
- 创建spring工程
- 引入spring相关依赖
- 创建类,定义属性和方法
- 按照spring要求创建配置文件,并配置相关信息
- 完成编码和测试
3. 构建工程模块
3.1 构建父模块spring-demo
- 在idea中,依次单击 File -> New -> Project -> New Project
- 点击"Create"
- 删除src目录
3.2 构建子模块spring6-first
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>
查看依赖:
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的配置文件: 配置如下:
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();
}
}
运行测试程序:
7. 总结
dom4j解析beans.xml文件,从中获取class属性值,类的全类名, Spring会通过类名加载该类(Class.forName()
方式),然后通过反射机制调用无参数构造方法,bean对象最终存储在Spring容器中,在Spring源码底层就是一个map集合,存储bean的map在DefaultListableBeanFactory类中: Spring容器加载到Bean类时, 会把这个类的描述信息,以包名加类名的方式存到beanDefinitionMap中, Map<String,BeanDefinition>, 其中Key是类名首字母小写, BeanDefinition存的是类的定义(描述信息) , 我们通常叫BeanDefinition接口为 : bean的定义对象。