从 Spring3.0开始,Spring JavaConfig 项目提供了很多特性,包括使用 java 而不是 XML 定义 bean .
比如:
- @Configuration,@Bean,@Import,@DependsOn
- @Component是一个通用注解,可用于任何bean
- @Repository,@Service,@Controller是更有针对性的注解
类的自动检测及Bean的注册
为了能够检测这些类并注册相应的Bean,需要下面内容
1 |
|
- context:component-scan 包含c ontext:annotation-config ,通常在使用前者后,不用再使用后者
- AutowiredAnnotationBeanPostProcessor和CommonAnnotationBeanPostProcessor也会被包含进来
使用过滤器进行自定义扫描
- 默认情况下,类被自动发现并注册bean的条件是:使用@Component,@Repository,@Service,@Controller注解或者使用@Component的自定义注解
Spring – context:component-scan使用说明
上面这篇文章写的很详细,可供参考
作用域(Scpoe)
- 通常情况下自动查找的Spring组件,其scope是singleton,Spring2.5提供了一个标识scope的注解@Scope
1 |
|
- 也可以自定义scope策略,实现ScopeMetadataResolver接口并提供一个无参构造器
1 | <beans> |
代理方式
- 可以使用scoped-proxy属性指定代理,有三个值可选:no(default),interfaces,targetClass
1
2
3<beans>
<context:component-scan base-package="org.example" gcoped-proxy="intexfaces"/>
</beans>