Spring在配置时候有三种方案可选

1、在xml中进行显示配置

2、在java中进行显示配置

3、隐式的Bean发现机制和自动装配

今天学习的 第二种—— 在java中进行显示配置

场景:

尽管在很多场景下通过组件扫描和自动装配实现Spring的自动化配置是更为推荐的方式,但有时候自动化配置的方案行不通,因此需要明确配置Spring。比如说,你想要将第三方库中的组件装配到你的应用中,在这种情况下,是没有办法在它的类上添加@Component和@Autowired注解的,因此就不能使用自动化装配的方案了。在这种情况下,你必须要采用显式装配的方式。(摘自 《Spring In Action》)

还是以CD机播放CD为例,首先 我们要创造CD接口

packagecom.bean.java;/*** Created by IntelliJ IDEA.

* Author XueYuan

* Data 2017/02/22

* Time 10:14*/

public interfaceCompactDisc {voidplay();

}

CD接口有了,那么我们还是先拿一张CD吧 里面有一首歌:

packagecom.bean.java;/*** Created by IntelliJ IDEA.

* Author XueYuan

* Data 2017/02/22

* Time 10:14*/

public class DangNianQing implementsCompactDisc {private String title = "DangNianQing";private String artist = "张国荣";public voidplay() {

System.out.println("Playing " + title + " By " +artist);

}

}

有了一首歌之后呢,感觉听来听去的单曲循环不过瘾 那我们就再来一个合集

packagecom.bean.java;/*** Created by IntelliJ IDEA.

* Author XueYuan

* Data 2017/02/22

* Time 10:57*/

public class RandomCd implementsCompactDisc {privateString title ;private String artist = "张国荣";publicRandomCd(String title) {this.title =title;

}public voidplay() {

System.out.println("Playing " + title + " By " +artist);

}

}

碟子有了下面就差播放器了, 我在创造一个播放器。。

packagecom.bean.java;/*** Created by IntelliJ IDEA.

* Author XueYuan

* Data 2017/02/22

* Time 10:29*/

public classCDPlay {privateCompactDisc compactDisc;publicCDPlay(CompactDisc compactDisc) {this.compactDisc =compactDisc;

}public voidplay() {

compactDisc.play();

}

}

好了,现在已经创造了四个类 分别是 CDPlay(CompactDisc compactDisc)  、RandomCd(String song) 、 DangNianQing() 、CompactDisc()

既然java显示配置适用的场景是配置第三方组件的,那么从现在开始,我不知道内部结构是怎样的,现在只知道:

CDPlay(CompactDisc compactDisc)是开始播放的接方法  compactDisc为是什么碟子

RandomCd(String song) 是随机选歌的方法 song 为歌名

DangNianQing()是播放 当年情 这首歌

CompactDisc()  CD的接口类,可以看作是 制作碟子的模版(碟子模版制作出来了,之后才刻录么,对吧? ~嗯,对的!)

播放器有了,碟子也有了 下面就是需要操作了

packagecom.bean.java;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;/*** Created by IntelliJ IDEA.

* Author XueYuan

* Data 2017/02/22

* Time 10:08*/@Configurationpublic classCDPlayerConfig {/*** @Bean 可以不指定名字 默认为方法名——'dangNianQing'

* @Bean(name="XXX") 也可以指定一个名字*/

/*@Bean

public CompactDisc dangNianQing() {

return new DangNianQing();

}*/@BeanpublicCompactDisc randomCd() {int choice = (int) Math.floor(Math.random() * 4);switch(choice) {case 0:return new RandomCd("dangNianQing");case 1:return new RandomCd("qianNvYouHun");case 2:return new RandomCd("wo");default:return new RandomCd("chenMoShiJing");

}

}@BeanpublicCDPlay cdPlay(CompactDisc compactDisc){return newCDPlay(compactDisc);

}}

这边在 randomCd() 与 cdPlay() 方法上面添加了 @Bean,就是把这两个方法装配成Bean

CDPlayerConfig  配置的操作,告诉我们如何去播放随机歌曲的方法,下面就让我们听一下

packagecom.bean.java;importorg.junit.Test;importorg.junit.runner.RunWith;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.test.context.ContextConfiguration;importorg.springframework.test.context.junit4.SpringJUnit4ClassRunner;/*** Created by IntelliJ IDEA.

* Author XueYuan

* Data 2017/02/22

* Time 10:35*/@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(classes= CDPlayerConfig.class)public classCDPlayerTest {

@Autowired

CDPlay cdPlay;/*@Autowired

RandomCd randomCd;*/

/*@Autowired

DangNianQing dangNianQing;*/@Testpublic voidtest() {

cdPlay.play();//dangNianQing.play();//randomCd.play();

}

}

当执行 test() 的时候:

步骤1、因为自动装配了CDPlay, 这个时候就会包下查找带有@Bean的 方法

步骤2、找到了CDPlayerConfig中的 cdPlay(),然后cdPlay()方法中需要有一个CompactDisc(随机播放的cd)

步骤3、但是方法中并没有CompactDisc啊 ,所以又要自动查找,这个时候找到了带执行CDPlay 中的play()方法播放

以上就是Java注解显示的配置Bean方法的简单小例子,如有错误,请指出,谢谢~

java 显示 装配_SpringInAction--自动化装配(显示装配之 java注解配置)相关推荐

  1. MongoDB和Java(5):Spring Data整合MongoDB(注解配置)

    最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装.客户端操作.安全认证.副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很 ...

  2. MongoDB和Java(4):Spring Data整合MongoDB(XML配置)

    最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装.客户端操作.安全认证.副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很 ...

  3. java 装配_JAVA入门[13]-Spring装配Bean

    一.概要 Sping装配bean主要有三种装配机制: 在XML中进行显式配置. 在Java中进行显式配置. 隐式的bean发现机制和自动装配. 原则: 建议尽可能地使用自动配置的机制,显式配置越少越好 ...

  4. 计算机自动化装配专机,自动化装配生产线结构原理及其组成形式的详解

    <自动化装配生产线结构原理及其组成形式的详解>由会员分享,可在线阅读,更多相关<自动化装配生产线结构原理及其组成形式的详解(2页珍藏版)>请在人人文库网上搜索. 1.自动化装配 ...

  5. 计算机自动化装配专机,自动化装配线

    自动化装配线(Automatic Assembly Line) [编辑] 什么是自动化装配线 自动化装配线是指从事产品制造后期的各种装配.检测.标示.包装等工序的生产设备. [编辑] 自动化装配线的作 ...

  6. java连接mysql数据库(jsp显示和控制台显示)

    很多事情,在我们没有做之前我们觉得好难,但是只要你静下心来,毕竟这些都是人搞出来的,只要你是人,那就一定可以明白. 配置:JDK1.8,MySQL5.7,eclipse:Neon Release (4 ...

  7. java web 项目在tomcat上显示空白页的解决

    今天调试一java web项目,所有页面都显示空白,有如下的解决过程: 一 切换浏览器模式 tomcat打开页面是空白 用localhost:8080打开页面显示空白,以前用着没问题. 浏览器兼容性问 ...

  8. Java黑皮书课后题第6章:*6.6(显示图案)编写方法显示如下图案:public static void displayPattern(int n)

    *6.6(显示图案)编写方法显示如下图案:public static void displayPattern(int n) 题目 题目概述 破题 代码 运行示例 题目 题目概述 *6.6(显示图案)编 ...

  9. Spring学习(七)bean装配详解之 【通过注解装配 Bean】【自动装配的歧义解决】...

    本文借鉴:Spring学习,@Bean 的用法(特此感谢!) 自动装配 1.歧义性 我们知道用@Autowired可以对bean进行注入(按照type注入),但如果有两个相同类型的bean在IOC容器 ...

最新文章

  1. linux中操作java进程
  2. 动态取得当前程序的版本号
  3. RIM 将在今天发布新的 BlackBerry 7 OS 手机
  4. Python入门100题 | 第032题
  5. maven工程打包老是报错_maven工程pom文件老是报错
  6. 微软出品,文科生也能学得懂的Python免费入门视频
  7. 多个Wyze 摄像头漏洞可导致攻击者接管设备并访问视频
  8. 实验楼python挑战答案_楼赛第1期-Linux项目挑战 题目解析
  9. C++笔记(2018/2/7)
  10. vue 项目中常见的几个问题
  11. 基于JavaWEB的学生考勤管理系统
  12. Windows下Redis-Cluster伪集群搭建
  13. if (Build.VERSION.SDK_INT = Build.VERSION_CODES.KITKAT)设置后的效果
  14. 【ospf-vlink虚拟连接】
  15. 解决 C2449在文件范围内找到 “{“(是否缺少函数头?), C2059 语法错误:“}“, C1075 “{“:未找到匹配令牌问题
  16. 计算机科学与技术书单
  17. 一个故事搞懂经济危机(少儿不宜)
  18. Cas5.3.14手机号码登录(五)
  19. 微信开放平台扫码登陆
  20. PUTT(psftp)文件上传下载

热门文章

  1. 禁止macOS 在Safari下载的ZIP文件自动解压
  2. http协议_HTTP协议
  3. HTML的快速入门(六)
  4. 思维导图Vue2组件
  5. 旅游地如何搭好影视剧“顺风车”
  6. 成人高考可以报计算机专业吗,没有基础可以报成人高考计算机专业吗
  7. java实现空心金字塔
  8. 个人官网导航主页API网站源码
  9. 【高考】人生的第一次转折
  10. autojs-ocr-easyedge-nodejs