Spring框架学习(一)
Spring框架
1.新建Maven项目
2.添加依赖
<properties>
<!--spring.version-->
<spring.version>5.3.5</spring.version>
</properties>
<dependencies>
<!--核心-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<!--bean-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<!--容器-->
<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>
设置spring.version方便以后更新
场景一:
(1)创建SlayDragonQuest类
package net.ty.spring.lesson01;
/**
* 功能:杀龙任务类
* 日期:21-03-24
*/
public class SlayDragonQuest {
public void embark() {
System.out.println("执行杀龙任务。");
}
}
(2)创建BraveKnight类
package net.ty.spring.lesson01;
/**
* 功能:勇敢骑士类
* 日期:21-03-24
*/
public class BraveKnight {
private SlayDragonQuest slayDragonQuest;
public void setSlayDragonQuest(SlayDragonQuest slayDragonQuest) {
this.slayDragonQuest = slayDragonQuest;
}
public void embarkOnQuest() {
slayDragonQuest.embark();
}
}
传统方式测试:
package net.ty.spring.lesson01;
import org.junit.Test;
/**
* 功能:传统方式测试救美骑士类
* 时间:20-03-24
*/
public class TestDamselRescuingKnightOld {
@Test
public void testDaselRescuingKnight() {
// 创建救美任务对象
RescueDamselQuest rescueDamselQuest = new RescueDamselQuest();
// 创建救美骑士类
DamselRescuingKnight damselRescuingKnight = new DamselRescuingKnight(rescueDamselQuest);
// 执行任务
damselRescuingKnight.embarkOnQuest();
}
}
Spring框架测试:
(1)log4j.properties
log4j.rootLogger=WARN, stdout, logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
(2)新建spring-config.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:noNamespaceSchemaLocation="http://www.springframework.org/schema/beans"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="slayDragonQuest" class="net.ty.spring.lesson01.SlayDragonQuest"/>
<bean id="Mike" class="net.ty.spring.lesson01.BraveKnight">
<property name="slayDragonQuest" ref="slayDragonQuest"/>
</bean>
</beans>
(3)测试
package net.ty.spring.lesson01;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* 功能:采用spring测试勇敢骑士类
* 日期:21-03-24
*/
public class TestBraveKnightNew {
private ClassPathXmlApplicationContext context; // 基于类路径XML配置文件的应用容器
@Before
public void init() {
context = new ClassPathXmlApplicationContext("xmlconfig/spring-config.xml");
System.out.println("spring应用容器已创建");
}
@Test
public void testBraveKnight() {
BraveKnight braveKnight = (BraveKnight) context.getBean("Mike");
braveKnight.embarkOnQuest();
}
@After
public void destroy() {
context.close();
System.out.println("spring应用容器已关闭");
}
}
重复定义Bean
场景二:
(1)创建RescueDamselQuest类
package net.ty.spring.lesson01;
/**
* 功能:救美任务类
* 时间:21-03-24
*/
public class RescueDamselQuest {
public void embark() {
System.out.println("执行救美任务。");
}
}
(2)创建DamselRescuingKnight类
package net.ty.spring.lesson01;
/**
* 功能:救美骑士类
* 时间:21-03-24
*/
public class DamselRescuingKnight {
private RescueDamselQuest rescueDamselQuest;
public DamselRescuingKnight(RescueDamselQuest rescueDamselQuest) {
this.rescueDamselQuest = rescueDamselQuest;
}
public void embarkOnQuest() {
rescueDamselQuest.embark();
}
}
传统方式测试:
package net.ty.spring.lesson01;
import org.junit.Test;
/**
* 功能:传统方式测试救美骑士类
* 时间:20-03-24
*/
public class TestDamselRescuingKnightOld {
@Test
public void testDaselRescuingKnight() {
// 创建救美任务对象
RescueDamselQuest rescueDamselQuest = new RescueDamselQuest();
// 创建救美骑士类
DamselRescuingKnight damselRescuingKnight = new DamselRescuingKnight(rescueDamselQuest);
// 执行任务
damselRescuingKnight.embarkOnQuest();
}
}
Spring框架测试:
修改spring-config.xml文件
测试
package net.ty.spring.lesson01;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* 功能:采用Spring容器测试救美骑士类
* 时间:20-03-24
*/
public class TestDamselRescuingKnightNew {
private ClassPathXmlApplicationContext context;
@Before
public void init() {
context = new ClassPathXmlApplicationContext("xmlconfig/spring-config.xml");
System.out.println("spring应用容器已创建");
}
@Test
public void testDamselRescuingKnight() {
// 根据名称从容器里获取救美骑士对象
DamselRescuingKnight damselRescuingKnight = (DamselRescuingKnight) context.getBean("damselRescuingKnight");
//执行任务
damselRescuingKnight.embarkOnQuest();
}
@After
public void destroy() {
context.close();
System.out.println("spring应用容器已关闭");
}
}
拆分xml文件:
拆分
测试
package net.ty.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");
System.out.println("spring应用容器已创建");
}
@Test
public void testKnight() {
BraveKnight mike = (BraveKnight) context.getBean("Mike");
BraveKnight knight1 = (BraveKnight) context.getBean("knight1");
BraveKnight knight2 = (BraveKnight) context.getBean("knight2");
DamselRescuingKnight damselRescuingKnight = (DamselRescuingKnight) context.getBean("damselRescuingKnight");
mike.embarkOnQuest();
knight1.embarkOnQuest();
knight2.embarkOnQuest();
damselRescuingKnight.embarkOnQuest();
}
@After
public void destroy() {
context.close();
System.out.println("spring应用容器已关闭");
}
}

浙公网安备 33010602011771号