博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
初探Spring——利用组件注解符精简Spring配置文件
阅读量:3971 次
发布时间:2019-05-24

本文共 3306 字,大约阅读时间需要 11 分钟。

目录

一、利用组件注解符精简Spring配置文件

  • 配置 - configuration
  • 注解 - annotation

1、创建net.zjs.spring.lesson02包

在这里插入图片描述

2、将lesson01子包的四个类拷贝到lesson02子包

在这里插入图片描述

3、修改杀龙任务类 - SlayDragonQuest

  • 业务Bean的配置可用注解符:@Component - 组件(@Service - 服务、@Repository - 仓库、@ Controller - 控制器)
    在这里插入图片描述
  • @Component(“参数”)——可设置名称,参数对应Spring配置文件里的Bean元素的id,若不设置便默认为类方法名的小写
  • 注:添加组件注解符(@Component):交给Spring容器管理

4、修改救美任务类 - RescueDamselQuest2

在这里插入图片描述

5、修改勇敢骑士类 - BraveKnight

在这里插入图片描述

6、修改拯救少女骑士类 - DamselRescuingKnight

在这里插入图片描述

7、创建Spring配置文件

(1)在resources目录创建xml_annotation子目录

在这里插入图片描述

(2)在xml-annotation子目录里面创建Spring配置文件 - spring-config.xml

在这里插入图片描述

(3)组件扫描:扫描指定包下添加了注解符的类(@Component、@Service、@Repository、@Controller),将其生成Bean对象

在这里插入图片描述

8、创建测试类 - TestKnight

(1)在test/java里创建net.zjs.spring.lesson2包

在这里插入图片描述

(2)在包里创建测试骑士类【TestKnight】

在这里插入图片描述

在这里插入图片描述

package net.zjs.spring.lesson02;import org.junit.After;import org.junit.Before;import org.junit.Test;import org.springframework.context.support.ClassPathXmlApplicationContext;/** * 功能:测试骑士类 * 作者:zjs * 时间:2021/3/17 */public class TestKnight {    private ClassPathXmlApplicationContext context;    @Before    public void init(){        //基于Spring配置创建应用容器        context=new ClassPathXmlApplicationContext("xml_annotation");    }    @Test    public void testBraveKnight(){        //根据名称从应用容器里获取勇敢骑士对象        BraveKnight braveKnight= (BraveKnight) context.getBean("braveKnight");        //勇敢骑士执行任务        braveKnight.embarkOnQuest();    }    @Test    public void testDamselRescuingKnight() {        // 根据名称从应用容器里获取拯救少女骑士对象        DamselRescuingKnight damselRescuingKnight = (DamselRescuingKnight) context.getBean("damselRescuingKnight");        // 拯救少女骑士执行任务        damselRescuingKnight.embarkOnQuest();    }    @After    public void destroy() {        // 关闭应用容器        context.close();        //提示用户        System.out.println("应用已关闭!");    }}

(3)运行测试方法testBraveKnight(),查看结果

  • 显示TestKnight.java中第19行错误

    在这里插入图片描述

  • 更改TestKnignt中19行错误

    在这里插入图片描述

  • 再次运行,查看结果

    在这里插入图片描述

(4)运行测试方法testDamselRescuingKnight(),查看结果

在这里插入图片描述

(5)运行整个测试类,查看效果

在这里插入图片描述

9、如何实现自定义Bean名

(1) 在类前添加@Component注解符,生成的Bean采用默认名称

  • 即类名首字母小写。如果不想采用默认名称,那么通过@Component注解符的参数来制定,比如给BraveKnight类添加注解符@Component(“mike”)或者@Component(value = “mike”):
    在这里插入图片描述

(2)修改测试方法testBraveKnight()

在这里插入图片描述

(3)运行测试方法testBraveKnight(),查看结果

在这里插入图片描述

二、程序优化 - 面向接口

  • Spring框架可以方便地管理Bean及其相互依赖。为了实现松耦合,一般采用面向接口的方式。多种骑士,多种任务,任意搭配。为了实现这个效果,我们应该抽象出两个接口:骑士接口(Knight)和任务接口(Quest)。骑士接口有两个实现类:BraveKnight和DamselRescuingKnight;任务接口有两个实现类:SlayDragonQuest和RescueDamselQuest

1、在src\java\net.zjs.spring.lession02子包中创建任务接口 - Quest

在这里插入图片描述

package net.zjs.spring.lesson02;/** * 功能:任务接口 * 作者:zjs * 时间:2021/3/17 */public interface Quest {    void embark();}

2、在src\java\net.zjs.spring.lession02子包中创建骑士接口 - Knight

在这里插入图片描述

package net.zjs.spring.lesson02;/** * 功能:骑士接口 * 作者:zjs * 时间:2021/3/17 */public interface Knight {    void embarkOnQuest();}

3、修改杀龙任务类 - SlayDragonQuest

在这里插入图片描述

4、修改拯救少女人物类 - RescueDamselQuest

在这里插入图片描述

5、修改勇敢骑士类 - BraveKnight

在这里插入图片描述

  • 注意:SlayDragonQuest类改成了Quest接口,这样就可以给该骑士自动装配任何任务(实现了Quest接口的Bean),增加了程序的灵活性。

6、修改拯救少女骑士类 - DamselRescuingKnight

在这里插入图片描述

7、运行测试类 - TestKnight

在这里插入图片描述

三、课堂练习

任务1:两种骑士交换执行任务。

  • 要求勇敢骑士去拯救少女,要求拯救少女骑士去杀龙。

(1)修改勇敢骑士类 - BraveKnight

在这里插入图片描述

(2)修改拯救少女骑士类 - DamselRescuingKnight

在这里插入图片描述

(3)运行测试类 - TestKnight

在这里插入图片描述

任务2、两种骑士都执行两项任务。

  • 要求勇敢骑士先执行杀龙任务,再执行救美任务。
  • 要求救美骑士先执行救美任务,再执行杀龙任务。

(1)修改勇敢骑士类 - BraveKnight

在这里插入图片描述

(2)修改拯救少女骑士类 - DamselRescuingKnight

在这里插入图片描述

(3)运行测试方法 - testBraveKnight()

在这里插入图片描述

(4)运行测试方法 - testDamselRescuingKnight()

在这里插入图片描述

任务3、勇敢骑士完成杀龙任务,勇敢骑士完成救美任务。

  • 将其还原,修改BraveKnight.java
    在这里插入图片描述
  • 修改DamselRescuingKnight.java
    在这里插入图片描述
  • 运行结果
    在这里插入图片描述

转载地址:http://mjtki.baihongyu.com/

你可能感兴趣的文章
LINUX驱动之IIC子系统之三I2C的数…
查看>>
Linux设备驱动之I2C架构分析
查看>>
i2c子系统之__i2c_first_dynamic_b…
查看>>
浅析linux内核中的idr机制
查看>>
i2c子系统之__i2c_first_dynamic_b…
查看>>
linux内核SPI总线驱动分析(一)
查看>>
浅析linux内核中的idr机制
查看>>
source insight使用
查看>>
linux内核SPI总线驱动分析(一)
查看>>
linux设备模型之uart驱动架构分析
查看>>
source insight使用
查看>>
git基本使用
查看>>
网络子系统5_设备队列规则 .
查看>>
七、WordPress配置HTTPS与开启CDN加速
查看>>
linux下如何手动编译安装bzip2库
查看>>
view must be a callable or a list tuple in the case of include
查看>>
CentOS 6.7下MySQL 5.6 yum快速安装及参数详解
查看>>
CentOS6.8二进制安装MySQL5.6
查看>>
centos 6x系统下源码安装mysql操作记录
查看>>
Centos搭建Mysql主从复制
查看>>