自动化装配bean
Spring从两个角度来实现自动化装配
- 组件扫描:Spring自动发现应用上下文所创建的bean
- 自动装配:Spring自动满足bean之间的依赖
创建可被发现的bean
- 如果希望在自动化装配中,bean可以被组件扫描到,对于每一个希望不被声明为bean的类,前面需要添加@Component注解
@Component
public class Compact {}
-如果希望生成的bean有独特的命名,可如下生成括号内的新名字
@Compenent("newName")
public class Compact {}
组件扫描
在Spring2.5中引入了组件自动扫描机制,通过在classpath自动扫描的方式把组件纳入到Spring容器中。这大大减少了程序员在配置XML文件上的时间,使得配置文件显得干净,整洁,便于维护。
通过XML启动组件扫描
在web.xml里面添加< context: component-scan base-package=”包名”>通过注解启动组件扫描
在配置类声明前添加注解@ComponentScan会扫描当前配置类下的包,并把bean纳入Spring容器中。
@ComponentScan()
public class CompactConfig{}
自动装配
- 如果希望将一个类的bean成功注入到另一个类中,可以通过注解@Autowired实现
@Component
public class Compact {
private CompactInside ci;
@Autowirred
public Compact(CompactInside ci) {
this.ci = ci;
}
}
@Component
public class Compact {
private CompactInside ci;
@Autowirred
public void setCompact(CompactInside ci) {
this.ci = ci;
}
}
- 如果找不到匹配的bean,那么程序会抛出异常,如果希望程序不被这种情况影响,可以加入required属性。此时自动装配失败,bean处于未装配状态。
@Component
public class Compact {
private CompactInside ci;
@Autowired(required=false)
public Compact(CompactInside ci) {
this.ci = ci;
}
}
- Java依赖注入规范提供了@Inject注解可完成一样的功能。