您现在的位置:首页 >> 基础 >> Java编程 >> 内容

隐式的bean发现与自动装配机制--Java学习网

时间:2016-11-10 12:17:17

  核心提示:使用beans.xml文件进行bean的创建和注入通常是可行的,但在便利性上Spring提供了更简单的方法——自动装配接下来我们假设一个场景:我有若干播放器(MediaPlayer{CD播放器/MP3...

使用beans.xml文件进行bean的创建和注入通常是可行的,但在便利性上Spring提供了更简单的方法——自动装配

接下来我们假设一个场景:我有若干播放器(MediaPlayer{CD播放器/MP3}),我也有很多媒体文件例如(CompactDisc{CD光盘/MP3文件})。
现在,我们需要创建两个接口MediaPlayer/CompactDisc,然后创建他们的实现CDPlayer/CompactDisc_zhoujielun。注意:CompactDisc_zhoujielun是周杰伦的CD光盘。代码如下:

 1 package com.spring.cd;
 2 
 3 import org.springframework.beans.factory.annotation.Autowired;
 4 import org.springframework.stereotype.Component;
 5 
 6 @Component//Spring自动创建bean
 7 public class CDPlayer implements MediaPlayer{
 8     private CompactDisc cd;
 9     
10     @Autowired//表明Spring初始化后尽可能地去满足bean的依赖,在这里它注入了一个CompactDisc的对象
11     public CDPlayer(CompactDisc cd){
12         this.cd=cd;
13     }
14     @Override
15     public void player() {
16         System.out.println("wo yong CD!");
17     }
18 }

当然,我们也可以在创建bean时对它命名,在CDPlayer类中可以体会到。代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package com.spring.cd;
 
import org.springframework.stereotype.Component;
 
@Component("ZhouJieLun")
public class CompactDisc_zhoujielun implements CompactDisc{
    private String title="发如雪";
    private String artist="周杰伦";
     
    @Override
    public void play(){
        System.out.println("播放:"+title+"来自艺术家:"+artist);
    }
}
接下来,我们需要启用组件扫描,组件扫描过程是通过Java代码来定义Spring的装配规则。代码如下:
1
2
3
4
5
6
7
8
9
10
package com.spring.cd;
 
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@ComponentScan("com.spring.cd") //参数代表当前需要扫描的路径,为空默认为当前包路径
@Configuration("cd")//需要扫描的包名称
//通过java代码定义spring的装配机制
public class CDPlayerConfig {
 
}

 值得注意的是,真正的实现过程与代码主体非常复杂,@Component,@ComponScan,@Autowired,@Comfiguration等注解的使用方法与参数是多样的。

为了实现可视化,我们新建一个JUnit4测试。代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package com.spring.cd;
 
import static org.junit.Assert.*;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=CDPlayerConfig.class)
public  class CDPlayerTest{
    @Autowired
    private CompactDisc cd;
    @Autowired
    private MediaPlayer player;
    @Test
    public void test() {
        player.player();
        cd.play();
        assertNotNull(cd);
        assertNotNull(player);
    }
 
}
上下文创建成功。

Java免费学习   Java自学网 http://www.javalearns.com

关注微信号:javalearns   随时随地学Java

或扫一扫

随时随地学Java

作者:不详 来源:网络
    你是从哪里知道本网站的?
  • 网友介绍的
  • 百度搜索的
  • Google搜索的
  • 其它搜索过来的
  • 网址输错了进来的
  • 太忙了不记得了
共有评论 0相关评论
发表我的评论
  • 大名:
  • 内容:
  • java学习网(www.javalearns.com) © 2014 版权所有 All Rights Reserved.
  • Email:javalearns@163.com 站长QQ:1356121699 晋ICP备14003680号-3
  • java学习网部分内容来自网络或网友发布,如侵犯了您利益,请发邮件至:javalearns@126.com,我们尽快处理!
  • Java学习网
  • 网站统计
  • 晋公网安备 14042902000001号