文章目录
一、创建新包二、复制四个类三、修改杀龙任务类四、修改救美任务类五、修改勇敢骑士类六、修改救美骑士类七、创建Spring配置文件八、创建测试类九、程序优化 - 面向接口1、创建任务接口2、创建骑士接口3、修改杀龙任务类4、修改救美任务类5、修改勇敢骑士类6、修改救美骑士类7、修改测试类一、创建新包
创建net.xxr.spring.day02
包二、复制四个类
三、修改杀龙任务类
package net.xxr.spring.day02;import org.ponent;/*** 功能:杀龙任务类*/@Componentpublic class SlayDragonQuest {public void embark() {System.out.println("执行杀龙任务……");}}
四、修改救美任务类
package net.xxr.spring.day02;import org.ponent;/*** 功能:救美任务类*/@Componentpublic class RescueDamselQuest {public void embark() {System.out.println("执行救美任务……");}}
五、修改勇敢骑士类
package net.xxr.spring.day02;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.ponent;/*** 功能:勇敢骑士类*/@Component("RobinHood")public class BraveKnight {@Value("罗宾汉") // 值注解符private String name;@Autowired // 自动装配注解符private SlayDragonQuest slayDragonQuest;/*** 勇敢骑士执行任务*/public void embarkOnQuest() {System.out.print("勇敢骑士[" + name + "]"); // 骑士留名slayDragonQuest.embark(); // 执行杀龙任务}}
六、修改救美骑士类
package net.xxr.spring.day02;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.ponent;/*** 功能:救美骑士类*/@Componentpublic class RescueDamselKnight {@Value("格拉海德") // 值注解符private String name;@Autowired // 自动装配注解符private RescueDamselQuest rescueDamselQuest;public void embarkOnQuest() {System.out.print("救美骑士[" + name + "]");rescueDamselQuest.embark();}}
七、创建Spring配置文件
在resources
目录创建xml_annotation
子目录,然后在里面创建Spring配置文件 -spring-config.xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd/schema/context/schema/context/spring-context.xsd"><!--组件扫描,扫描指定包下添加了注解符的类或接口,将其生成Bean对象--><context:component-scan base-package="net.xxr.spring.day02" /></beans>
八、创建测试类
在test/java
里创建net.xxr.spring.day02
包,在包里创建TestKnight
类package net.xxr.spring.day02;import org.junit.After;import org.junit.Before;import org.junit.Test;import org.springframework.context.support.ClassPathXmlApplicationContext;/*** 功能:测试骑士类*/public class TestKnight {private ClassPathXmlApplicationContext context; // 基于类路径XML配置文件的应用容器@Beforepublic void init() {// 基于Spring配置文件创建应用容器context = new ClassPathXmlApplicationContext("xml_annotation/spring-config.xml");}@Testpublic void testKnight() {// 根据名称从应用容器里获取勇敢骑士对象BraveKnight knight1 = (BraveKnight) context.getBean("RobinHood");// 勇敢骑士执行任务knight1.embarkOnQuest();// 根据名称从应用容器里获取救美骑士对象RescueDamselKnight knight2 = (RescueDamselKnight) context.getBean("rescueDamselKnight");// 救美骑士执行任务knight2.embarkOnQuest();}@Afterpublic void destroy() {// 关闭应用容器context.close();}}
运行方法,查看结果
九、程序优化 - 面向接口
1、创建任务接口
任务接口 -Quest
package net.xxr.spring.day02;/*** 功能:任务接口*/public interface Quest {void embark();}
2、创建骑士接口
package net.xxr.spring.day02;/*** 功能:骑士接口*/public interface Knight {void embarkOnQuest();}
3、修改杀龙任务类
杀龙任务类 -SlayDragonQuest
,实现任务接口package net.xxr.spring.day02;import org.ponent;/*** 功能:杀龙任务类*/@Componentpublic class SlayDragonQuest implements Quest{@Overridepublic void embark() {System.out.println("执行杀龙任务……");}}
4、修改救美任务类
救美任务类 -RescueDamselQuest
,实现任务接口package net.xxr.spring.day02;import org.ponent;/*** 功能:救美任务类*/@Componentpublic class RescueDamselQuest implements Quest{@Overridepublic void embark() {System.out.println("执行救美任务……");}}
5、修改勇敢骑士类
勇敢骑士类 -BraveKnight
,实现骑士接口package net.xxr.spring.day02;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.ponent;/*** 功能:勇敢骑士类*/@Component("RobinHood")public class BraveKnight implements Knight{@Value("罗宾汉") // 值注解符private String name;@Autowired // 自动装配注解符private Quest slayDragonQuest;/*** 勇敢骑士执行任务*/public void embarkOnQuest() {System.out.print("勇敢骑士[" + name + "]"); // 骑士留名slayDragonQuest.embark(); // 执行杀龙任务}}
6、修改救美骑士类
救美骑士类 -DamselRescuingKnight
,实现骑士接口package net.xxr.spring.day02;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.ponent;/*** 功能:救美骑士类*/@Componentpublic class RescueDamselKnight implements Knight{@Value("格拉海德") // 值注解符private String name;@Autowired // 自动装配注解符private Quest rescueDamselQuest;public void embarkOnQuest() {System.out.print("救美骑士[" + name + "]");rescueDamselQuest.embark();}}
7、修改测试类
测试类 -TestKnight
package net.xxr.spring.day02;import org.junit.After;import org.junit.Before;import org.junit.Test;import org.springframework.context.support.ClassPathXmlApplicationContext;/*** 功能:测试骑士类*/public class TestKnight {private ClassPathXmlApplicationContext context; // 基于类路径XML配置文件的应用容器@Beforepublic void init() {// 基于Spring配置文件创建应用容器context = new ClassPathXmlApplicationContext("xml_annotation/spring-config.xml");}@Testpublic void testKnight() {// 根据名称从应用容器里获取勇敢骑士对象Knight knight1 = (BraveKnight) context.getBean("RobinHood");// 勇敢骑士执行任务knight1.embarkOnQuest();// 根据名称从应用容器里获取救美骑士对象Knight knight2 = (RescueDamselKnight) context.getBean("rescueDamselKnight");// 救美骑士执行任务knight2.embarkOnQuest();}@Afterpublic void destroy() {// 关闭应用容器context.close();}}
运行测试结果