标签:
spring提供恶劣几种技巧,可以帮助我们减少xml的配置数量
自动装配:有助于减少甚至消除配置<property>元素和<construct-arg>元素,让spring自动识别如何装配bean的依赖关系。
自动检测:比自动装配更进一步,让spring能够自动识别哪些类需要配置程spring bean,从而减少对<bean>元素的使用。
4种类型的自动装配
byName,byType,constructor,autodetect
1,byName自动装配
<bean id="one" class="......"> <property name="song" value="zhangsan"/> <property name="instrument" ref="two"/> </bean>
<bean id="instrument" class="......"/>
<bean id="one" class="......" autowire="byName"> <property name="song" value="zhangsan"/> </bean>
2,byType自动装配
autowire="byType"
为自动装配标识一个首选bean primary属性 默认为true
<bean id="one" class="......" primary="false"/>
为自动装配排除某些bean 设置autowire-candidate的属性为false
<bean id="one" class="......" autowire-candidate="false"/>
3,constructor 自动装配
构造器
<bean id="one" class="......" autowire="constructor"/>
4,autodetect自动装配
首先使用 constructor自动装配,如果没有发现与构造器匹配的bean时,spring将尝试使用bytype自动装配
<bean id="one" class="......" autowire="autodetect"/>
也可以混合使用装配和显示装配
<bean id="one" class="......" autowire="bytype"> <property name="song" value="zhangsan"/> <property name="instrument" ref="saxophone"/> </bean>
使用注解装配
<context:annotation-config/>
spring3 支持几种不同的用于自动装配的注解:
*spring 自带的@Atutowired 注解;
*JSP-330 的@Inject 注解;
*JSP-250 的@Resource注解;
1,使用@Autowired
不仅能使用它标注setter方法,还可以标注需要自动装配bean引用的任意方法
@Autowired(required=false)
@Qualifier("...")
2,使用@Inject
与@Autowired不同的是 @Inject没有required属性 所以@Inject注解所标注的依赖关系必须存在,如果不存在,则会抛出异常
@Inject
@Named("...")
自动检测bean
使用<context:component-scan>元素来代替<context:annotation-config>元素
<context:component-scan base-package="......"> </context:component-scan>
默认情况下<context:component-scan>查找使用构造型注解所标注的类,这些特殊的注解如下
@Component-通用的构造型注解,标识该类型为spring组件
@Controller-标识将该类定义为springMVC controller
@Repository-标识该类定义为数据仓库
@Service-标识该类定义为服务
使用@Component标注的任意自定义注解
过滤组件扫描
我们可以通过为<context:component-scan>配置<comtext:include-filter>和/或者<context:exclude-filter>子元素
<context:component-scan base-package="..."> <context:include-filter type="assignable" expression="..."/> <context:exclude-filter type="annotation" expression="......"/> </context:component-scan>
使用spring基于Java的配置
创建基于Java的配置
<context:component-scan base-package="..."/>
定义一个配置类
@Configuration
声明一个简单的bean
@bean
标签:
原文地址:http://www.cnblogs.com/chentaiyan/p/4460829.html