Sring实战学习笔记一

隐式的bean发现机制和自动装配

  • 组件扫描(component scanning): spring会自动发现应用上下文中所创建的bean
  • 自动装配(Autowiring): spring自动满足bean之间的依赖
    定义一个接口
package soundsystem;
public interface ComPactDisc {
    void play();
}

ComPactDisc的是实现

package soundsystem;

import org.springframework.stereotype.Component;

/* 表明该类会作为组件,并告知Spring要为这个类创建bean */
@Component
public class SgtPeppers implements ComPactDisc {
    private String title = "Sgt. Pepper's Lonely Hearts Club Band";
    private String artist = "The Beaties";
    @Override
    public void play() {
        System.out.println("Playing " + title + " by " + artist);

    }
}

创建一个自动扫描的类,去扫描带有@Component的类

package soundsystem.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import soundsystem.TT;


/* @Configuration:表明这个是一个java配置类 */
@Configuration
@ComponentScan("soundsystem")
public class CDPlayerConfig {
//里面什么都不写,只作为扫描用的
}

@ComponentScan用法

  • 使用了@ComponentScan,会将@ComponentScan指定的目录作为根目录,扫描这个同级目录中的@Component和目录下的@Component
  • @ComponentScan: 不设置任何属性,会将该类所在的目录作为基础包(根目录)
  • @ComponentScan(“soundsystem”): 会将包名为soundsystem作为基础包(根目录)
  • @ComponentScan(basePackages={“soundsystem”, “xxx”}): 会将包名为soundsystem和包名为xxx作为基础包(两个基础包)
  • @ComponentScan(basePackageClasses = {ComPactDisc.class, TT.class}): 会将ComPactDisc和TT这个类所在的包作为基础包(两个基础包)
    编写测试类
package soundsystem;

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 soundsystem.config.CDPlayerConfig;
import static org.junit.Assert.assertNotNull;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes= CDPlayerConfig.class)
public class CDMTest {
	/** 当Spring创建ComPactDisc bean的时候,会通过这个构造器来进行实例化 */
    @Autowired
    private ComPactDisc cd;

    @Test
    public void cdShouldNotBeNull() {
        assertNotNull(cd);
        cd.play();
    }
}

全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务