装配Bean—自动化装配Bean

1.0  自动化装配Bean

Spring配置可选方案:

​ 装配是依赖注入DI的本质,Spring提供了以下三种注入的装配机制:

  • 在XMl中进行显式配置
  • 在java中进行显式配置
  • 隐式的Bean发现机制和自动装配

自动化装配Bean:

 Spring从两个角度来实现自动化装配:

  • 组件扫描(component scanning):Spring会自动发现用用上下文中所创建的Bean.
  • 自动装配(autowiring):Spring自动满足bean之间的依赖.

实例:

CD和CDPlayer,如果你不将CD放入(注入)到播放器中,那么CD播放器其实是没多大用处的,所以说,CD播放器是依赖于CD才能完成它的使命.

package com.CDDemo;
//CD的接口
public interface CompactDisc {
   public void play();
}
package com.CDDemo;
import org.springframework.stereotype.Component;
//CD的实现类 歌曲
@Component
public class SgtPeppers implements CompactDisc {
    private String title = "sgt";
    private String song = "Twinkle, twinkle, little start";
    public void play() {
        System.out.println("title:" + title + "song:" + song);
    }
}
package com.CDDemo;
import org.springframework.stereotype.Component;
//CD的实现类 歌曲
@Component
public class SgtPeppers implements CompactDisc {
    private String title = "sgt";
    private String song = "Twinkle, twinkle, little start";
    public void play() {
        System.out.println("title:" + title + "song:" + song);
    }
}
package com.CDDemo;
//测试类
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;
import static org.junit.Assert.assertNotNull;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = CDPlayerConfig.class)
public class CDTest {
    @Autowired
    private CompactDisc cd;
    @Test
    public void cdShouldNotBeNull() {
      assertNotNull(cd);
      cd.play();
    }
}

上面需要注意的是:

@Configuration

定义了Spring的装配规则

@ComponentScan

这个会默认扫描与配置类相同的包.(这里扫描package com.CDDemo;同包以及下面的所有的子包)

查找出带有@Component注解的类 这样就能发现CompactDisc(因为注解了它的实例) 并为它在Spring中创建一个Bean.

当然你也可以通过配置XML的方式来启用组件扫描:

猜你喜欢

转载自www.cnblogs.com/socketqiang/p/11316466.html