一、上次学习的内容
上次的学习是第一次接触Spring,上次我们对pom文件相关添加了依赖,主要是对采用Spring配置文件管理Bean进行了学习
二、今天要学习的内容
(1)利用组件注解符精简Spring配置文件
(2)配置 - configuration,注解 - annotation,记住这两个单词
三、实现步骤
(一)运行测试一下上次的代码是否还完整
(二)在上一次的项目基础上我们新建一个包
(三)将lesson01的四拷贝到lesson02包中
(四)修改类
1、SlayDragonQuest.java
2、RescueDamselQuest.java
3、DamselRescuingKnight.java
4、BraveKnight.java
(五)创建spring配置文件
附上代码:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"> <!--组件扫描,扫描指定包下添加了注解符的类或接口,将其生成Bean对象--> <context:component-scan base-package="net.lbd.spring.lesson02" /> </beans>
(六)新建TestKnght
附上代码:
package net.lbd.spring.lesson02; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * 功能:测试骑士类 * 作者: * 日期:2021年 */ public class TestKnight { private ClassPathXmlApplicationContext context; // 基于类路径XML配置文件的应用容器 @Before public void init() { // 基于Spring配置文件创建应用容器 context = new ClassPathXmlApplicationContext("xml_annotation/spring-config.xml"); } @Test public void testKnight() { // 根据名称从应用容器里获取勇敢骑士对象 BraveKnight knight1 = (BraveKnight) context.getBean("Mike"); // 勇敢骑士执行任务 knight1.embarkOnQuest(); // 根据名称从应用容器里获取救美骑士对象 DamselRescuingKnight knight2 = (DamselRescuingKnight) context.getBean("damselRescuingKnight"); // 救美骑士执行任务 knight2.embarkOnQuest(); } @After public void destroy() { // 关闭应用容器 context.close(); } }
(七)运行查看结果
四、优化程序,面向接口
(一)创建接口Knight、Quest
附上相关代码:
package net.lbd.spring.lesson02; /** * 功能:骑士接口 * 作者: * 日期: */ public interface Knight { void embarkOnQuest(); }
package net.lbd.spring.lesson02; /** * 功能:任务接口 * 作者: * 日期: */ public interface Quest { void embark(); }
(二)、修改类
1、SlayDragonQuest
2、RescueDamselQuest
3、DamelRescuingKnight
4、BraveKnight
(三)运行查看结果
五、遇到的问题
(一)
报错原因,在BraveKnight里面多加了两个静态,删除这俩个静态就好了