基于注解的依赖注入3
Spring2.5提供的基于注解的依赖注入,除了可以使用Spring提供的@Autowired和@Qualifier来标注相应类定义之外,还可以使用JSR250的@Resource。
@Resource与@Autowired不同,它遵循的是byName自动绑定形式的行为准则:
public class FXNewsProvider {
@Resource(name="djNewsListener")
private IFXNewsListener newsListener;
@Resource(name="djNewsPersister")
private IFXNewsPersister newsPersister;
}
@Resource同样可以标注于属性域或者方法之上。
classpath-scanning功能介绍
到目前为止,我们还是需要将相应的对象的bean定义一个个地添加到IoC容器的配置文件中。与之前唯一的区别就是,不用在配置文件中明确指定依赖关系了。既然使用注解来表达对象之间的依赖注入关系,那为什么不搞的彻底一点儿,将那些几乎光秃秃的bean定义从配置文件中彻底消灭呢?classpath-scanning的功能正是因此而诞生的。
使用相应注解对组成应用程序的相关类进行标注之后,classpath-scanning功能可以从顶层包开始扫描。当扫描到某个标注了相应的注解之后,就会提取该类的相关信息,构建对应的BeanDefinition,然后把构建完的BeanDefinition注册到容器。
classpath-scanning功能的触发是由决定的。
默认扫描的注解类型是@Component。不过,在@Component语义基础上细化后的@Repository、@Service和@Controller也同样可以获得的青睐。
在扫描相关类定义并将它们添加到容器的时候,会使用一种默认的命名规则,来生成那些添加到容器的bean定义的名称。如果想改变这一默认行为,可以指定一个自定义的名称。
@Component(“myService”)