1.

 1 package soundsystem;
 2 import org.springframework.context.annotation.ComponentScan;
 3 import org.springframework.context.annotation.Configuration;
 4
 5 @Configuration    //说明此类是配置文件
 6 //@ComponentScan //开启扫描,会扫描当前类的包及其子包
 7 //@ComponentScan(basePackages={"soundsystem", "video"})//扫描多个包
 8 @ComponentScan(basePackageClasses={CDPlayer.class})//指定要扫描的类
 9 public class CDPlayerConfig {
10 }

2.

 1 package soundsystem;
 2 import org.springframework.beans.factory.annotation.Autowired;
 3 import org.springframework.stereotype.Component;
 4
 5 @Component
 6 public class CDPlayer implements MediaPlayer {
 7   private CompactDisc cd;
 8
 9   @Autowired
10   public CDPlayer(CompactDisc cd) {  //依赖bean的id会叫"cd"???
11     this.cd = cd;
12   }
13
14   public void play() {
15     cd.play();
16   }
17
18 }

3.

 1 package soundsystem;
 2 import org.springframework.stereotype.Component;
 3
 4 @Component
 5 public class SgtPeppers implements CompactDisc {
 6
 7   private String title = "Sgt. Pepper's Lonely Hearts Club Band";
 8   private String artist = "The Beatles";
 9
10   public void play() {
11     System.out.println("Playing " + title + " by " + artist);
12   }
13
14 }

4.

 1 package soundsystem;
 2
 3 import static org.junit.Assert.*;
 4
 5 import org.junit.Rule;
 6 import org.junit.Test;
 7 import org.junit.contrib.java.lang.system.StandardOutputStreamLog;
 8 import org.junit.runner.RunWith;
 9 import org.springframework.beans.factory.annotation.Autowired;
10 import org.springframework.test.context.ContextConfiguration;
11 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
12
13 @RunWith(SpringJUnit4ClassRunner.class)    //会自动创建applicationcontext
14 @ContextConfiguration(classes=CDPlayerConfig.class)//指定配置文件
15 public class CDPlayerTest {
16
17   @Rule
18   public final StandardOutputStreamLog log = new StandardOutputStreamLog();
19
20   @Autowired
21   private MediaPlayer player;  //默认id会是“player”???
22
23   @Autowired
24   private CompactDisc cd;
25
26   @Test
27   public void cdShouldNotBeNull() {
28     assertNotNull(cd);
29   }
30
31   @Test
32   public void play() {
33     player.play();
34     assertEquals(
35         "Playing Sgt. Pepper's Lonely Hearts Club Band by The Beatles",
36         log.getLog());
37   }
38
39 }

bean

转载于:https://www.cnblogs.com/shamgod/p/5231218.html

SPRING IN ACTION 第4版笔记-第二章-001-用@Autowired\@ComponentScan、@Configuration、@Component实现自动装载bean...相关推荐

  1. SPRING IN ACTION 第4版笔记-第二章-002-@ComponentScan、@Autowired的用法

    一.@ComponentScan 1. @Configuration //说明此类是配置文件 @ComponentScan //开启扫描,会扫描当前类的包及其子包 public class CDPla ...

  2. SPRING IN ACTION 第4版笔记-第二章-004-Bean是否单例

    spring的bean默认是单例,加载容器是会被化,spring会拦截其他再次请求bean的操作,返回spring已经创建好的bean. It appears that the CompactDisc ...

  3. SPRING IN ACTION 第4版笔记-第三章ADVANCING WIRING-008-SpEL介绍

    一. 1.SpEL expressions are framed with  #{ ... } 2.SpEl的作用 Sp EL has a lot of tricks up its sleeves, ...

  4. SPRING IN ACTION 第4版笔记-第三章ADVANCING WIRING-003-@Conditional根据条件生成bean及处理profile...

    一.用@Conditional根据条件决定是否要注入bean 1. package com.habuma.restfun;public class MagicBean {} 2. package co ...

  5. SPRING IN ACTION 第4版笔记-第四章ASPECT-ORIENTED SPRING-008-带参数的ADVICE

    一. 假设有情形如:cd里有很多轨,当播放音乐时,要统计每个音轨的播放次数,这些统计操作不应放在播放方法里,因为统计不是播放音乐的主要职责,这种情况适合应用AOP. 二. 1. package sou ...

  6. SPRING IN ACTION 第4版笔记-第四章Aspect-oriented Spring-001-什么是AOP

    一. Aspect就是把会在应用中的不同地方重复出现的非业务功能的模块化,比如日志.事务.安全.缓存 In software development, functions that span mult ...

  7. 机器人导论(第四版)学习笔记——第二章

    机器人学导论(第四版)学习笔记--第二章 2. 空间描述和变换 2.1 引言 2.2 描述:位置.姿态与位姿 2.3 映射:从一个坐标系到另一个坐标系的变换 2.4 算子:平行,旋转和变换 2.5 总 ...

  8. 考研408 笔记 计算机网络【谢希仁第七版】第二章【物理层】几种复用方式 信道复用技术,频分复用FDM,时分复用TDM,波分复用WDM,码分复用CDM

    2.1物理层基本概念 目的:启动.维护和关闭数据链路实体之间进行比特传输的物理连接. 一些特性: 机械特性:指明接口所用接线器的形状和尺寸.引线数目和排列.固定和锁定装置等等. 电气特性:指明在接口电 ...

  9. 王道考研2019版计算机网络第二章--物理层

    语雀笔记链接: 王道考研2019版计算机网络第二章--物理层 (yuque.com)https://www.yuque.com/xiaojinchunchun/bxuuke/guce8z#EjOI8 ...

最新文章

  1. c语言中的extern_7.6 C语言内部函数和外部函数
  2. 创建细分客户的无监督学习项目
  3. 【Hibernate】dao层 +getHibernateTemplate()方法解析
  4. [CQOI2018] 解锁屏幕(状压dp)
  5. 从iOS的图片圆角想到渲染
  6. pe卸载win10更新补丁_新图标+新功能!win10凌晨更新补丁
  7. c语言小球触地问题,OC语言中关于触摸事件和手势
  8. ant design 上传+自定义上传
  9. 【Linux实验】Linux操作基础
  10. 计算机英语六级时间,计算机一级考试_6月英语六级报名时间
  11. Vue前端编译问题集
  12. 功能自动化测试的策略有哪些?
  13. Grafana 系列文章(一):基于 Grafana 的全栈可观察性 Demo
  14. 阿里云首发CIPU处理器,这次要抢CPU的C位,为OS反向自研
  15. cs231n 2018系列笔记(lecture7)
  16. 1w存银行一年多少利息_银行存款100万,一年后可以拿到多少钱?
  17. 用格里高利公式求π的近似值
  18. 数字IC手撕代码-乐鑫科技笔试真题(4倍频)
  19. 【HTML】HTML网页设计----动漫网站设计
  20. 企业ERP系统上线的最后一道防线——ERP系统上线预评估审计

热门文章

  1. GANs最新综述论文: 生成式对抗网络及其变种如何有用【附pdf下载】
  2. C 语言取整的几种方法6,C语言有以下几种取整方法:
  3. 理解SSD多盒-实时目标检测
  4. 弄潮儿数据_SINX 信息数据的“弄潮儿”
  5. windows镜像_什么是windows镜像?什么是Ghost?它们有什么优缺点?
  6. linux 脚本在哪里编写,Linux 脚本编写基础(一)
  7. linux 命令tf,linux——新手提问(关于文件内容替换)
  8. php查询记录是否存在,php – 如果记录存在,我可以更新记录,如果不存在,可以在单个查询中更新多行吗?...
  9. 基于javaweb的黑马旅游网站来源_喜讯丨创业黑马(重庆)科技孵化中心今日开业!助力重庆高新区打造人工智能创新高地...
  10. Java基础---标志符、变量和数据类型