码迷,mamicode.com
首页 > 编程语言 > 详细

spring_IOC(2)

时间:2015-04-28 11:09:31      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:

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

 

spring_IOC(2)

标签:

原文地址:http://www.cnblogs.com/chentaiyan/p/4460829.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!