文章目录
- 一、Spring
- 1.1、Slay Dragon
- 1.2、RescueDamselQuest
- 1.3、使用接口来运行程序
一、Spring
第一周写了两个小项目均使用了原始调用
和容器
的方法
两个项目:<斩杀大龙与上路保卫战>
配一张文件位置图
1.1、Slay Dragon
BraveKnight
package net.sherry.spring.day01;
public class BraveKnight {
private String name; //骑士姓名
private SlayDragonQuest slayDragonQuest; //杀龙任务
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setSlayDragonQuest(SlayDragonQuest slayDragonQuest) {
this.slayDragonQuest = slayDragonQuest;
}
public void embarkOnQuest(){
System.out.print("召唤师["+ name + "]");// 勇士流明
slayDragonQuest.embark();// 执行任务
}
}
Slay Dragon Quest
package net.sherry.spring.day01;
public class SlayDragonQuest {
public void embark(){
System.out.println("Red team has slay the dragon");
}
}
下面是调用方法
spring-config.xml
这个是下面两个方法所用的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.sherry.spring.day01.SlayDragonQuest"/>
<bean id="braveKnight" class="net.sherry.spring.day01.BraveKnight">
<property name="name" value="姜承録"/>
<property name="slayDragonQuest" ref="slayDragonQuest"/>
</bean>
<bean id="knight1" class="net.sherry.spring.day01.BraveKnight">
<property name="name" value="Rookie"/>
<property name="slayDragonQuest" ref="slayDragonQuest"/>
</bean>
<bean id="knight2" class="net.sherry.spring.day01.BraveKnight">
<property name="name" value="JackeyLove"/>
<property name="slayDragonQuest" ref="slayDragonQuest"/>
</bean>
<!--配置营救任务Bean-->
<bean id="rescueDamselQuest" class="net.sherry.spring.day01.RescueDamselQuest"/>
<!--配置营救Bean-->
<bean id="rescueDamselKnight" class="net.sherry.spring.day01.RescuedamselKnight">
<constructor-arg value="Ning" />
<constructor-arg ref="rescueDamselQuest" />
</bean>
</beans>
TestBraveKnightOld
这个是原始方法
package net.sherry.spring.day01;
import org.junit.Test;
public class TestBraveKnightOLd {
@Test
public void testBraveKnight(){
// 创建一个斩杀对象
SlayDragonQuest slayDragonQuest = new SlayDragonQuest();
// 创建勇敢骑士对象
BraveKnight braveKnight = new BraveKnight();
//设置勇敢骑士属性
braveKnight.setName("姜承録");
braveKnight.setSlayDragonQuest(slayDragonQuest);
//调用勇敢骑士执行任务方法
braveKnight.embarkOnQuest();
}
}
TestKnightNew
使用容器的方法
package net.sherry.spring.day01;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* 功能:采用Spring容器测试勇敢骑士类
* 作者:Sherry
* 日期:2023年02月13日
*/
public class TestKnightNew {
private ClassPathXmlApplicationContext context; // 基于类路径XML配置文件的应用容器(Bean工厂)
@Before // 每次测试方法执行前都要执行的代码就放在此方法里
public void init() {
// 基于Spring配置文件创建应用容器
context = new ClassPathXmlApplicationContext("xmlconfig/spring-config.xml");
// 提示用户
System.out.println("Spring应用容器已创建~");
}
@Test
public void testBraveKnight() {
try {
// 根据名称从应用容器中获取勇敢骑士对象
BraveKnight braveKnight = (BraveKnight) context.getBean("braveKnight");//BraveKnight
// 勇敢骑士执行任务
braveKnight.embarkOnQuest();
BraveKnight knight1 = (BraveKnight) context.getBean("knight1");//BraveKnight
// 勇敢骑士执行任务
knight1.embarkOnQuest();
BraveKnight knight2 = (BraveKnight) context.getBean("knight2");//BraveKnight
// 勇敢骑士执行任务
knight2.embarkOnQuest();
}catch (Exception e){
System.out.println("查无此人");
}
}
@After // 每次测试方法执行后都要执行的代码就放在此方法里
public void destroy() {
// 关闭应用容器
context.close();
// 提示用户
System.out.println("Spring应用容器已关闭~");
}
}
1.2、RescueDamselQuest
上路保卫战
RescueDamselKnight
package net.sherry.spring.day01;
/**
* 功能:
* 作者:Sherry
* 日期:2023/2/15
*/
public class RescuedamselKnight {
private String name; //英雄名
private RescueDamselQuest rescueDamselQuest; // 救援任务
/**
* 有参构造方法
*
* @param name
* @param rescueDamselQuest
*/
public RescuedamselKnight(String name, RescueDamselQuest rescueDamselQuest){
this.name = name;
this.rescueDamselQuest = rescueDamselQuest;
}
public void embarkOnQuest(){
System.out.print("上路保卫者["+ name +"]" );
rescueDamselQuest.embark();
}
}
RescueDamselQuest
package net.sherry.spring.day01;
/**
* 功能:
* 作者:Sherry
* 日期:2023/2/15
*/
public class RescueDamselQuest {
public void embark(){
System.out.println("执行营救任务……");
}
}
TestRescueDamselKnightOld
package net.sherry.spring.day01;
import org.junit.Test;
/**
* 功能:
* 作者:Sherry
* 日期:2023/2/15
*/
public class TestRescueDamselKnightOld {
@Test
public void testRescuedamselKnight(){
// 创建营救任务
RescueDamselQuest rescueDamselQuest = new RescueDamselQuest();
// 创建英雄对象
RescuedamselKnight rescuedamselKnight = new RescuedamselKnight("Ning", rescueDamselQuest);
// 执行任务
rescuedamselKnight.embarkOnQuest();
}
}
TestRescueDamselKnightNew
package net.sherry.spring.day01;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* 功能:采用Spring容器测试营救任务
* 作者:Sherry
* 日期:2023/2/15
*/
public class TestRescueDamselKnightNew {
private ClassPathXmlApplicationContext context; // 基于类路径XML配置文件的应用容器(Bean工厂)
@Before // 每次测试方法执行前都要执行的代码就放在此方法里
public void init() {
// 基于Spring配置文件创建应用容器
context = new ClassPathXmlApplicationContext("xmlconfig/spring-config.xml");
// 提示用户
System.out.println("Spring应用容器已创建~");
}
@Test
public void testRescueDamselKnight() {
RescuedamselKnight rescuedamselKnight = (RescuedamselKnight) context.getBean("rescueDamselKnight");
rescuedamselKnight.embarkOnQuest();
}
@After // 每次测试方法执行后都要执行的代码就放在此方法里
public void destroy() {
// 关闭应用容器
context.close();
// 提示用户
System.out.println("Spring应用容器已关闭~");
}
}
1.3、使用接口来运行程序
BraveKnight
package net.sherry.spring.day02;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@Component("姜承錄")
public class BraveKnight implements Knight{
@Value("Ning")//值注解符
private String name; //骑士姓名
@Autowired //自动装配注解符
private SlayDragonQuest slayDragonQuest; //杀龙任务
@Override
public void embarkOnQuest(){
System.out.print("召唤师["+ name + "]");// 勇士流明
slayDragonQuest.embark();// 执行任务
}
}
RescuedamselKnight
package net.sherry.spring.day02;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
* 功能:
* 作者:Sherry
* 日期:2023/2/15
*/
@Component
public class RescuedamselKnight implements Knight{
@Value("姜承録")
private String name; //英雄名
@Autowired
private RescueDamselQuest rescueDamselQuest; // 救援任务
@Override
public void embarkOnQuest(){
System.out.print("上路保卫者["+ name +"]" );
rescueDamselQuest.embark();
}
}
SlayDragonQuest
package net.sherry.spring.day02;
import org.springframework.stereotype.Component;
@Component
public class SlayDragonQuest implements Quest{
@Override
public void embark(){
System.out.println("Red team has slay the dragon");
}
}
RescuDamelsQuest
package net.sherry.spring.day02;
import org.springframework.stereotype.Component;
/**
* 功能:
* 作者:Sherry
* 日期:2023/2/15
*/
@Component
public class RescueDamselQuest implements Quest{
@Override
public void embark(){
System.out.println("执行营救任务……");
}
}
然后是两个接口类:
Quest
package net.sherry.spring.day02;
/*
* 功能:任务接口
* 作者:Sherry
* 日期:2023年02月21日
*/
public interface Quest {
void embark();
}
Knight
package net.sherry.spring.day02;
public interface Knight {
void embarkOnQuest();
}
测试类:
TestKnight
package net.sherry.spring.day02;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
/**
* 功能:测试骑士类
* 作者:Sherry
* 日期:2023/2/21
*/
public class TestKnight {
private ClassPathXmlApplicationContext context; // 基于类路径XML配置文件的应用容器(Bean工厂)
@Before // 每次测试方法执行前都要执行的代码就放在此方法里
public void init() {
// 基于Spring配置文件创建应用容器
context = new ClassPathXmlApplicationContext("xml_annotation/spring-config.xml");
}
@Test
public void testKnight(){
// 根据名称从应用容器里获取勇敢骑士对象
Knight knight1 = (BraveKnight) context.getBean("姜承錄");
// 勇敢骑士执行任务
knight1.embarkOnQuest();
// 根据名称从应用容器里获取勇敢骑士对象
Knight knight2 = (RescuedamselKnight) context.getBean("rescuedamselKnight");
// 勇敢骑士执行任务
knight2.embarkOnQuest();
}
@After // 每次测试方法执行后都要执行的代码就放在此方法里
public void destroy() {
// 关闭应用容器
context.close();
}
}
测试结果:
每个人执行两个任务