一、正文
1、创建Maven项目
2、pom.xml 进行配置
<properties>
<!-- spring.version -->
<spring.version>5.3.4</spring.version>
</properties>
<dependencies>
<!--Spring核心-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<!--Spring Bean-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<!--Spring容器-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<!--Spring测试-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<!--单元测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency>
</dependencies>
可能会有点报错,首先修改MyBatis第一步中的三大步
其次,
场景1:骑士完成杀龙任务
(1)创建杀龙任务类-SlayDragonQuest
(2)创建杀龙骑士类-BraveKnight
3、采用传统方式让骑士完成杀龙任务
- 传统方式:
1、创建测试类
2、创建任务对象
3、骑士对象
4、设置骑士去完成任务
5、骑士执行任务
4、采用Spring框架让骑士完成杀龙任务
- 创建log4j.properties
- 创建Spring配置文件spring-config.xml
有些没有XML创建模板,需要自定义
- 在Spring配置文件里创建Bean
Spring容器就是管理Bean的工厂,在< beans>元素里配置Bean
- 配置文件与骑士类的关系:
- 测试类
- 运行结果:
场景2:骑士完成救美任务
1、采用构造函数注入方式给Bean注入属性
(1)救美骑士类 - DamselRescuingKnight
(2)救美任务类- RescueDamselQuest
(3)在Spring配置文件里创建救美骑士Bean
(4)测试救美骑士类
三、思考题
(1)拆分Spring配置文件
多个spring-config.xml情况,分解Bean工厂
- Spring-config01.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">
<!--创建杀龙任务Bean-->
<bean id="slayDragonQuest" class="net.zy.spring.lesson01.SlayDragonQuest"/>
<!--创建骑士Bean-->
<bean id="Mike" class="net.zy.spring.lesson01.BraveKnight">
<property name="slayDragonQuest" ref="slayDragonQuest"/>
<!-- property元素:给对象设置属性值-->
<!--指勇敢骑士类的属性 name属性:Bean对象的属性名-->
<!--指第11行 ref属性:Bean对象的属性值(引用另一个Bean对象)-->
</bean>
<bean id="Amy" class="net.zy.spring.lesson01.BraveKnight">
<property name="slayDragonQuest" ref="slayDragonQuest"/>
</bean>
</beans>
- Spring-config02.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">
<!-- 案例:采用构造函数注入方式给Bean注入属性-->
<bean id="rescueDamselQuest" class="net.zy.spring.lesson01.RescueDamselQuest"/>
<bean id="damselRescuingKnight" class="net.zy.spring.lesson01.DamselRescuingKnight">
<constructor-arg ref="rescueDamselQuest"/>
</bean>
</beans>
(2)测试类 -TestKnight.java
package net.zy.spring.lesson01;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestKnight {
private ClassPathXmlApplicationContext context;
@Before
public void init(){
context = new ClassPathXmlApplicationContext("xmlconfig/spring-config*.xml");
}
@Test
public void testKnight(){
BraveKnight mike = (BraveKnight)context.getBean("Mike");
BraveKnight amy = (BraveKnight)context.getBean("Amy");
DamselRescuingKnight damselRescuingKnight = (DamselRescuingKnight)context.getBean("damselRescuingKnight");
mike.embarkOnQuest();
amy.embarkOnQuest();
damselRescuingKnight.embarkOnQuest();
}
@After
public void destroy(){
context.close();
}
}