java 显示 装配_SpringInAction--自动化装配(显示装配之 java注解配置)
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注解配置)相关推荐
- MongoDB和Java(5):Spring Data整合MongoDB(注解配置)
最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装.客户端操作.安全认证.副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很 ...
- MongoDB和Java(4):Spring Data整合MongoDB(XML配置)
最近花了一些时间学习了下MongoDB数据库,感觉还是比较全面系统的,涉及了软件安装.客户端操作.安全认证.副本集和分布式集群搭建,以及使用Spring Data连接MongoDB进行数据操作,收获很 ...
- java 装配_JAVA入门[13]-Spring装配Bean
一.概要 Sping装配bean主要有三种装配机制: 在XML中进行显式配置. 在Java中进行显式配置. 隐式的bean发现机制和自动装配. 原则: 建议尽可能地使用自动配置的机制,显式配置越少越好 ...
- 计算机自动化装配专机,自动化装配生产线结构原理及其组成形式的详解
<自动化装配生产线结构原理及其组成形式的详解>由会员分享,可在线阅读,更多相关<自动化装配生产线结构原理及其组成形式的详解(2页珍藏版)>请在人人文库网上搜索. 1.自动化装配 ...
- 计算机自动化装配专机,自动化装配线
自动化装配线(Automatic Assembly Line) [编辑] 什么是自动化装配线 自动化装配线是指从事产品制造后期的各种装配.检测.标示.包装等工序的生产设备. [编辑] 自动化装配线的作 ...
- java连接mysql数据库(jsp显示和控制台显示)
很多事情,在我们没有做之前我们觉得好难,但是只要你静下心来,毕竟这些都是人搞出来的,只要你是人,那就一定可以明白. 配置:JDK1.8,MySQL5.7,eclipse:Neon Release (4 ...
- java web 项目在tomcat上显示空白页的解决
今天调试一java web项目,所有页面都显示空白,有如下的解决过程: 一 切换浏览器模式 tomcat打开页面是空白 用localhost:8080打开页面显示空白,以前用着没问题. 浏览器兼容性问 ...
- Java黑皮书课后题第6章:*6.6(显示图案)编写方法显示如下图案:public static void displayPattern(int n)
*6.6(显示图案)编写方法显示如下图案:public static void displayPattern(int n) 题目 题目概述 破题 代码 运行示例 题目 题目概述 *6.6(显示图案)编 ...
- Spring学习(七)bean装配详解之 【通过注解装配 Bean】【自动装配的歧义解决】...
本文借鉴:Spring学习,@Bean 的用法(特此感谢!) 自动装配 1.歧义性 我们知道用@Autowired可以对bean进行注入(按照type注入),但如果有两个相同类型的bean在IOC容器 ...
最新文章
- linux中操作java进程
- 动态取得当前程序的版本号
- RIM 将在今天发布新的 BlackBerry 7 OS 手机
- Python入门100题 | 第032题
- maven工程打包老是报错_maven工程pom文件老是报错
- 微软出品,文科生也能学得懂的Python免费入门视频
- 多个Wyze 摄像头漏洞可导致攻击者接管设备并访问视频
- 实验楼python挑战答案_楼赛第1期-Linux项目挑战 题目解析
- C++笔记(2018/2/7)
- vue 项目中常见的几个问题
- 基于JavaWEB的学生考勤管理系统
- Windows下Redis-Cluster伪集群搭建
- if (Build.VERSION.SDK_INT = Build.VERSION_CODES.KITKAT)设置后的效果
- 【ospf-vlink虚拟连接】
- 解决 C2449在文件范围内找到 “{“(是否缺少函数头?), C2059 语法错误:“}“, C1075 “{“:未找到匹配令牌问题
- 计算机科学与技术书单
- 一个故事搞懂经济危机(少儿不宜)
- Cas5.3.14手机号码登录(五)
- 微信开放平台扫码登陆
- PUTT(psftp)文件上传下载