Spring框架学习笔记02:初探Spring——利用组件注解符精简Spring配置文件

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

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

在这里插入图片描述

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

在这里插入图片描述

3、修改杀龙任务类-SlayDragonQuest

在这里插入图片描述
如果没有设置参数那么组件采用默认名称

4、修改救美任务类 - RescueDamselQuest

在这里插入图片描述

5、修改勇敢骑士类 - BraveKnight

在这里插入图片描述
注意:删除setSlayDragonQuest()方法,因为已经通过自动装配注解设置了勇敢骑士的杀龙任务属性。

6、修改救美骑士类 - DamselRescuingKnight

在这里插入图片描述
注意:删除了构造方法,因为已经通过资源注解符将救美任务属性注入了救美骑士组件。

7、创建Spring配置文件

在这里插入图片描述
组件扫描:扫描指定包下添加了注解符的类(@Component、@Service、@Repository、@Mapper、@Controller),将其生成Bean对象

<?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.lh.spring.lesson02" />
</beans>

8、创建测试类 - TestKnight

在这里插入图片描述

package net.lh.spring.lesson02;

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配置文件的应用容器

    @Before
    public void init() {
        // 基于Spring配置文件创建应用容器
        context = new ClassPathXmlApplicationContext("xml_annotation/spring-config.xml");
    }

    @Test
    public void testKnight() {
        // 根据名称从应用容器里获取勇敢骑士对象
        BreakKnight knight1 = (BreakKnight) context.getBean("Mike");
        // 勇敢骑士执行任务
        knight1.embarkOnQuest();
        // 根据名称从应用容器里获取救美骑士对象
        DamselRescuingKnight knight2 = (DamselRescuingKnight) context.getBean("damselRescuingKnight");
        // 救美骑士执行任务
        knight2.embarkOnQuest();
    }
    @Test
    public void testDamselRescuingKnight(){

    }

    @After
    public void destroy() {
        // 关闭应用容器
        context.close();
    }
}

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

在这里插入图片描述

二、程序优化 - 面向接口

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

1、创建任务接口 - Quest

在这里插入图片描述

package net.lh.spring.lesson02;

public interface Quest {
    void embark();
}

2、创建骑士接口 - Knight

package net.lh.spring.lesson02;

public interface Knight {
    void embarkOnQuest();
}

3、修改杀龙任务类 - SlayDragonQuest(让杀龙任务类实现任务接口)

在这里插入图片描述

4、修改救美任务类 - RescueDamselQuest(让救美任务类实现任务接口)

在这里插入图片描述

5、修改勇敢骑士类 - BraveKnight(让勇敢骑士类实现骑士接口)

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

6、修改救美骑士类 - DamselRescuingKnight(让救美骑士类实现骑士接口)

在这里插入图片描述

7、修改测试类 - TestKnight

在这里插入图片描述

8、运行测试类 - TestKnight

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
第一课:面向抽象编程 4 第二课:Jdom的基本使用 4 第三课:模拟Spring功能 5 第四课:搭建sping的运行环境 8 一、 建立一个新的项目 8 二、 建立spring配置文件 8 三、 引入spring的jar包 8 四、 测试代码: 8 五、 注意接口的使用: 8 第五课:IOC(DI)配置及应用 9 一、 什么是IOC、DI 9 二、 编辑xml文件时,没有提示 9 三、 注入类型(Injecting dependencies) 9 (一) setter注入类型Setter Injection 9 (二) 构造方法Constructor Injection 10 四、 id、name 11 五、 简单属性的注入 11 六、 Bean的作用范围scope 12 七、 集合注入 12 八、 自动装配autowire 13 (一) byName 13 (二) byType 14 (三) 注意 14 九、 生命周期 15 (一) lazy-init/default-lazy-init 15 (二) init-method destroy-method 不要和prototype一起用(了解) 15 第六课:annotation方式Spring 16 一、 开始使用annotation配置Spring 16 二、 @Autowired、@Qualifier 16 (一) @Autowired 16 (二) @Qualifier 17 三、 @Resource(重要、推荐) 17 (一) JSR-250 17 (二) @Resource 17 四、 @Componet 18 五、 @Scope、@PostConstruct、@PreDestroy 19 六、 注解对应的jar包 19 第七课:AOP(面向切面编程) 19 一、 AOP概念 19 二、 利用动态代理实现面向切面编程 20 第八课:Spring AOP配置选项 21 一、 AOP配置annotation方式 21 (一) 搭建annotation开发环境 21 (二) aspectJ类库 22 (三) AOP的annotation实例 22 (四) AspectJ的专业术语 23 (五) 织入点语法 23 (六) Advice 24 (七) Pointcut 26 (八) annotatin方式的AOP实例 26 二、 AOP配置xml方式 27 三、 AOP实现动态代理注意 28 第九课:DataSource 28 一、 Sping配置数据源: 28 二、 注入使用 29 三、 dbcp.BasicDataSource 29 第十课 Spring整合Hiberante3 30 一、 Spring配置hibernate3的SessionFactory 30 (一) xml形式的SessionFactory 30 (二) annotation注解方式的SessionFactory 30 二、 引入hibernate所需要使用的jar 31 (一) 基本jar 31 (二) 加入annotation功能的jar包 31 (三) 搭建日志环境并配置显示DDL语句jar包 31 三、 Spring整合hibernate3事务 31 (一) Annotation注解方式配置事务管理 31 (二) Spring事务选项 35 (三) XML文件形式配置Spring事务管理 37 四、 HibernateTemplate 38 (一) HibernateTemplate 38 (二) HibernateDaoSupport 39 第十一课:Spring整合-SSH 40 一、 第一步:加入jar包(需要的jar包列表) 40 二、 第二步: 首先整合Spring + Hibernate 41 三、 第三步:再来整合Struts2 41 四、 struts的读常量: 43 第十二课:DTO、VO 43 一、 DTO 43 二、 VO 43 第十二课:SSH整合存在的问题 43 一、 Jsp中访问Session时,Session已经关闭 43 二、 如果不配置事务,openSessionView出现异常 44 三、 中文乱码问题: 44 第十三课:SSH整合的jar包 45 一、 Struts2 45 二、 Hibernate3.3.2 45 三、 Spring 46

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lihai__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值