一、创建maven工程
1.1新建项目,选择Maven,JDK选择17
1.2Name填spring6即可,GroupId自己选择。
1.3接着,在spring下面创建子模块
1.4同样选择Maven,JDK17
1.5Name写spring-first,下一步
1.6此时,得到了以下项目结构
ps:这里,主要为了得到spring-first。在一开始创建maven自带的src,也就是红框之外的,是无用的,可以删除处理。
二、引入Spring相关依赖
2.1来到spring-first的pom.xml中,添加spring和junit依赖
添加的代码片
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.0.2</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.6.3</version>
</dependency>
</dependencies>
最终,spring-first下的pom.xml如下
三、创建类,定义属性和方法
3.1在spring-first下的java建包,com.kiong
3.2再在包中创建User类。这一步完成后,项目结构如下
3.3定义User类的方法
ps:以前,我们用传统的new User来创建对象,现在我们尝试使用Spring自动创建对象。
package com.kiong.spring6;
public class User {
public void add(){
System.out.println("add...");
}
public static void main(String[] args) {
//User user = new User();
//user.add();
}
}
四、在Spring配置文件配置相关信息
4.1在main下的resources中创建bean.xml
bean.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">
<!--完成user对象创建
bean标签
id属性:bean的唯一标识
class属性:要创建对象所在类的全路径(包名称+类名称)
-->
<bean id="user" class="com.kiong.spring6.User"></bean>
</beans>
五、进行初步测试
5.1创建测试类
5.2编写方法。TestUser.java内容如下
package com.kiong.spring6;
import org.junit.jupiter.api.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestUser {
@Test
public void testUser() {
//加载spring配置文件,创建对象
ApplicationContext context =
new ClassPathXmlApplicationContext("bean.xml");
//获取创建的对象
User user = (User)context.getBean("user");
System.out.println(user);
//使用对象调用方法进行测试
user.add();
}
}
5.3运行测试类
观察输出结果。
ps:成功调用对象方法,说明通过spring也可以创建对象。
六、思考、Q&A
6.1 Q:既然不是传统的new创建对象,那么spring在创建对象时,类的无参构造是否执行?
A:是的。
验证:在User类中创建无参构造方法(Alt+Insert,选Constructor可以快速创建)
接着,到TestUser类运行,查看结果。说明类的无参构造是会运行的。
6.2 Q:除了通过new来创建对象,还有什么办法可以创建对象?
A:其中之一是反射,spring就是这样。
6.3 Q:创建对象放到哪里?
A:Map容器中