关于xml配置不会在本篇说明,有兴趣的读者可以自行了解学习;
知识追寻者(Inheriting the spirit of open source, Spreading technology knowledge;)
自动装配Bean主要通过如下两个方式实现自动装备bean
@ComponentScan
注解,其会默认会扫描与配置类相同的包和其子包;如果是xml就是			<context:component-scan>
		理下思路我们可以通过@Component注解使用在多个类上实现多个bean;然后通过@Autowiring使用在方法上实现bean之间的依赖注入;最后通过@ComponentScan将所有bean扫入spring应用上下文;当然里面还有许多使用的小细节,要不然很容易出错;
实现如下
/**
 * @Author lsc
 * <p>棉被 </p>
 */
@Component
public class Quilt {
    // 质量
    private String quality;
    public void product(){
        System.out.println("生产与中国");
    }
// 省略set/get
}
复制代码
	/**
 * @Author lsc
 * <p> 被单</p>
 */
@Component//相当于@Component("sheet")
public class Sheet {
    // 颜色
    private String color;
    // 长度
    private String length;
    private Quilt quilt;
    // 使用构造器注入方式将Quilt注入到Sheet,你也可以使用set方式;原则上还可以其它方法
    public Sheet(Quilt quilt){
        this.quilt = quilt;
    }
// 省略set/get
}
复制代码
	/**
 * @Author lsc
 * <p>被单配置类 </p>
 */
@Configuration//告诉spring这是一个配置类
@ComponentScan//这边的包是com.zszxz.auto 相当于@ComponentScan(basePackages = {"com.zszxz.auto"})
public class SheetConfig {
}
复制代码
	/**
 * @Author lsc
 * <p> </p>
 */
@RunWith(SpringJUnit4ClassRunner.class)//创建spring应用上下文
@ContextConfiguration(classes= SheetConfig.class)//加载配置类
public class SheetTest {
    @Autowired
    Sheet sheet;
    @Test
    public void sheetTest(){
        // 生产与中国
        sheet.getQuilt().product();
    }
}
复制代码
	java配置只需要通过如下注解即可完成,通常使用在引入第三方类时;
思路:@Configuration注解声明的配置类中使用注解@Bean,就实现了java配置;
/**
 * @Author lsc
 * <p>棉 </p>
 */
public class Cotton {
    // 质量
    private String quality;
    public void product(){
        System.out.println("cotton生产与中国");
    }
    //  省略set/get
}
复制代码
	/**
 * @Author lsc
 * <p> 毛毯</p>
 */
public class Blanket {
    // 颜色
    private String color;
    // 长度
    private String length;
    // 构造器注入
    private Cotton cotton;
    @Autowired
    public Blanket(Cotton cotton){
        this.cotton = cotton;
    }
    //  省略set/get
}    
复制代码
	/**
 * @Author lsc
 * <p>毛毯配置类 </p>
 */
@Configuration//告诉spring这是一个配置类,spring会扫描其所有配置纳入spring容器
public class BlanketConfig {
    // 将Cotton注入到spring应用上下文
    @Bean
    public Cotton cotton(){
        return new Cotton();
    }
    // 将 Cotton注入到Blanket注入到spring应用上下文
    @Bean
    public Blanket blanket(Cotton cotton){
        return new Blanket(cotton);
    }
}
复制代码
	/**
 * @Author lsc
 * <p> </p>
 */
@RunWith(SpringJUnit4ClassRunner.class)//创建spring应用上下文
@ContextConfiguration(classes= BlanketConfig.class)//加载配置类
public class BlanketTest {
    @Autowired
    Blanket blanket;
    @Test
    public void sheetTest(){
        // cotton生产与中国
        blanket.getCotton().product();
    }
}
复制代码
	
使用		@Import
注解能将一个配置类导入另一个配置类, 通常用来合并配置类,下面的示例使用方式更加优雅;	
使用示例
/**
 * @Author lsc
 * <p> </p>
 */
@Configuration
@Import({SheetConfig.class, BlanketConfig.class})
public class MergeConfig {
}
复制代码
	测试示例
/**
 * @Author lsc
 * <p> </p>
 */
@RunWith(SpringJUnit4ClassRunner.class)//创建spring应用上下文
@ContextConfiguration(classes= MergeConfig.class)//加载配置类
public class MergeTest {
    @Autowired
    Blanket blanket;
    @Test
    public void sheetTest(){
        // cotton生产与中国
        blanket.getCotton().product();
    }
}
复制代码