Spring装配bean--01组件扫描和自动装配

Spring容器负责创建应用程序中的bean并通过DI来协调这些对象之间的关系

Spring提供了三种主要的装配机制:

  • 在XML中进行显式配置
  • 在Java中进行显式配置
  • 隐式的bean发现机制和自动装配

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

  1. 组件扫描(component scanning):Spring 会自动发现应用上下文中所创建的bean
  2. 自动装配(autowired):Spring自动满足bean之间的依赖@Autowired

开启组件扫描的2种方法:

  • XML中配置<context:component-scan base-package="autowired" />
  • java配置类中添加@ComponentScan

以下是代码解释

1. CD光盘类

@Component("cd1")//括号内给该bean设置ID,若不设置则默认为类名首字母小写即cD
public class CD
{
private String title = "最炫民族风";
private String artist = "凤凰传奇"; public void play()
{
System.out.println("当前播放: " + title + " 演唱者: " + artist);
}
} 2 CDplayer播放器类 @Component("cdPlayer")
public class CDplayer
{
@Autowired
private CD cd; public void play()
{
cd.play();
}
} 3 Java配置类开启组件扫描 @Configuration//声明该类是一个java配置类,不存在任何逻辑
@ComponentScan//在不声明basePackage的情况下,默认该类所在包下开启组件扫描
public class JavaConfig
{ } 4 XML配置文件开启组件扫描 <?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"> <context:component-scan base-package="autowired" />
</beans> 5 测试类 public class TestCase
{
@Test
public void test01()
{
//java配置方法 开启组件扫描
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(JavaConfig.class);
CD cd1 = (CD) context.getBean("cd1");
System.out.println(cd1);
CDplayer cp1 = (CDplayer) context.getBean("cdPlayer");
cp1.play();
} @Test
public void test02()
{
//XML配置方式 开启组件扫描
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
CD cd1 = (CD) context.getBean("cd1");
System.out.println(cd1);
CDplayer cp1 = (CDplayer) context.getBean("cdPlayer");
cp1.play();
}
}

  

6 console控制台结果

autowired.CD@105fece7
    当前播放: 最炫民族风 演唱者: 凤凰传奇

上一篇:ITest


下一篇:《JAVA程序设计》_第六周学习总结