Spring4详解系列(二)装配Bean

1.Spring提供了三种装配bean的方式:

Spring容器负责创建应用程序中的Bean并通过DI来协调这样对象之间的关系。Spring主要提供了三种主要的装配机制:

  1. 在XML中进行显示配置
  2. 在Java中进行显示配置
  3. 隐式的Bean的发现机制和自动装配

2.自动化装配Bean

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

  • 组件扫描(Spring自动发现应用中上下文所需要的创建的Bean),
  • 自动装配(Spring自动满足Bean之间的依赖)

配置组件扫描包(组件扫描)

  • 在Java类中配置组件扫描 @ComponentScan("com.test.controller")
  • 在XML配置文件配置组件扫描

创建可被发现的Bean

@Component
public class A{

    private boolean abc() {
        System.out.println("测试...");
    }

}

@Component
public class B{

    @Autowired
    private A a;

    private boolean bcd() {
        a.abc();
    }

}

为组件扫描的Bean命名及自动配置

@Configuration
// 三种不同的扫描配置
//@ComponentScan(basePackages= {"com.b.dao","com.c.dao"})
//@ComponentScan(basePackageClasses= {A.class,B.class})
@ComponentScan(basePackages= "com.a.dao")
public class Spring4Test {
	
	// 两种自动配置方式,哪种都是可以的
	@Autowired
	private InsideTest insideTest;
	@Inject
	private InsideTest_ insideTest_;

}

/**
 *   注:Spring支持将@Named作为@Component注解的代替方案,两者有一些细微的差异
 *   但是在大多数场景中,它们是可以相互替换的。
*/
@Component("insideTest")
class InsideTest{
	// 这里给组件命名的方式是@Component("insideTest")
}
@Named("insideTest_")
class InsideTest_{
	// 这里给组件命名的方式是@Named("insideTest_")
}

3.通过Java代码装配Bean

// 创建配置类
@Configuration
public class Spring4Test {
	@Bean
	public AookTest aook(){
		return new AookTest();
	}
	@Bean
	public BookTest book(){
		return new BookTest(aook());
	}
}
// 测试类AookTest
class AookTest{
	public void month() {
		System.out.println("调用成功...");
	}
}
//测试类BookTest
class BookTest{
	private AookTest aookTest;
	public BookTest(AookTest aook) {
		this.aookTest = aook;
	}
	public void mainTest() {
		aookTest.month();
	}
}
//测试类CookTest
class CookTest{
	public static void main(String[] args) {
		AnnotationConfigApplicationContext annot = 
				new AnnotationConfigApplicationContext(Spring4Test.class);
		BookTest bean = annot.getBean(BookTest.class);
		bean.mainTest();
	}
}

4.通过XML装配Bean

在Spring低版本中,XML中采用的是基于DTD的配置方式,Spring4.0配置升级后是基于Schema的配置方式,虽然升级是向后兼容的,但后者是我们首选的XML配置方式。 一个基本的基于Schema的XML配置模板如下:




        
            
        
        
        
  • xmlns="http://www.springframework.org/schema/beans" 默认命名空间
  • xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 自定义命名空间,
  • xsi是简称 xsi:schemaLocation 是个命名空间对应的schema文件 

实际项目中我们通常都会选择组合使用 :

①隐式的Bean发现机制和Java中进行装配进行组合   ②隐式的Bean发现机制和XML配置进行组合

这样便于我们更方便的配置Spring项目

 

你可能感兴趣的:(Spring系统整理)