关于Bean的介绍就具体不多介绍了,,,
Spring在配置时候有三种方案可选
1、在xml中进行显示配置
2、在java中进行显示配置
3、隐式的Bean发现机制和自动装配
今天学习的就是自动化装配Bean
Spring又可以从两个角度来实现自动化装配:
1、组建扫描【component scanning】 spring会自动发现应用上下文所创建的bean
2、自动装配【autowiring】 spring自动满足bean之间的依赖
根据Spring In Action的例子 CD插入到CD播放器中才可以播放。。
既然要有CD那么就先创建一个CD的接口类:
package com.bean.auto; /**
* Created by IntelliJ IDEA.
* Author XueYuan
* Data 2017/02/21
* Time 20:55
*/
public interface CompactDisc { void play();
}
好了CD接口类创建好了,下面就要选择从众多的CD中选择一个喜欢的歌 那就选择 国荣哥哥的 当年情 吧
package com.bean.auto; import org.springframework.stereotype.Component; /**
* Created by IntelliJ IDEA.
* Author XueYuan
* Data 2017/02/21
* Time 20:56
*/ /**
* Bean配置方法:
* |- @Component 注解表示这个类我要把它创建成bean
* |- @Component("XXX") XXX表示bean的标识名字
* |- @Named("XXX") XXX表示bean的标识名字
*/ @Component
public class DangNianQing implements CompactDisc { private String title = "DangNianQing";
private String artist = "张国荣"; public void play() {
System.out.println("Playing " + title + " By " + artist);
}
}
其实这个类中最重要的是 @Component 这个主要的就是告诉你: 我现在是一个变身成bean家族的一员了,下面你可以追我了啊 哈哈哈:)
@Component("XXX") 与 @Named("XXX") 都是一样的作用,他们三个的区别就是
1、使用的 @Component 的时候如果你没有定义一个bean的名字给他的话,他就会默认给你起一个即类名首字母变小些—— dangNianQIng
2、使用 @Component("XXX") 的时候 跟 1 没有多大区别,就是起得名字不一样 ,比如狗蛋啊 二娃啊啥的
3、使用 @Named("XXX") 的时候 使用的是Java依赖注入规范中提供的@Named注解。Spring大肚能容,两种方式都支持,虽然两者有细微的差异,差异在于@Named要求必须起名字,而@Component则不必要,见