Spring装配-Java配置

// CD的概念
public interface CompactDisc {
}

/*
 带有@Component的类
 Spring所有的Bean会有一个ID,在Java配置的方法中没有ID那么ID就是类名字的首字母小写
 如果想给Bean增加不同的ID那么可以在注解@Component("beanID")
 还有一个方法是使用Java依赖注入规范@Named("BeanId")
  */
@Component
public class SgtPeppers implements CompactDisc{
    private String title = "京东CD";
    private String artist = "The Beatles";

    // CD播放
    public void play() {
        System.out.println("Playing" + title + " by " + artist);
    }
}
/*
    Spring配置类
    @Configuration: 证明是配置类
    @ComponentScan: 开启扫描
    在不添加其他配置的情况下@ComponentScan此注解只会扫描同级目录下的
    如果要扫描其他包或者多个包的时候:
    一个的时候:@ComponentScan(basePackage="packageName")
    多个的时候:@ComponentScan(basePackage={"packageName", "Cdplay"})
    包的名字都是采用String形式去定位的,那么这种方法是类型不安全的。
    较为安全的方式:指定包中的接口或类
    @ComponentScan(basePackageClasses = {CDplay.class})
 */
@Configuration
@ComponentScan
public class CDPlayConfig {
}
/*
    SpringJUnit4ClassRunner.class: 在测试开始就创建Spring上下文
   @ContextConfiguration(classes = CDPlayConfig.class):从哪里加载Spring配置
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = CDPlayConfig.class)
public class CDPlayerTest {
    /*
        @Autowired:自动装配
        作用是让Spring自动满足Bean依赖的方法,会在Spring查找匹配的某个Bean需求的其他的Bean。
        不止可以作用在Get和set方法的上面还可以在构造函数上面加入,这个时候就是在对象创建的时候可以自动装配
        不管是构造器还是get和set方法还时其他的方法,Spring的自动装配的注解都会尝试去满足方法参数上的依赖,
        如果没有找到匹配的情况就会抛出异常,那么避免这种异常情况得发生可以在Autowired注解的属性required设置为false
        相同作用的注解:
        JAVA规范:@Inject @Named
     */
    @Autowired
    private CompactDisc cd;

    @Test
    public void cdShouldNotBeNUll() {
        assertNotNull(cd);
    }
}

你可能感兴趣的:(java)