您的位置:首页 > 编程语言 > Java开发

Spring 2.5 注释驱动的 IoC 功能(总结)

2012-05-31 10:24 323 查看
reference:
http://www.ibm.com/developerworks/cn/java/j-lo-spring25-ioc/ http://leiwuluan.iteye.com/blog/607373 http://www.chinasb.org/archives/2011/06/2443.shtml
@Autowired 与@Resource的区别:

1、 @Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。

2、 @Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下:

1
@Autowired
()

@Qualifier
(
"baseDao"
)
2
private
BaseDao baseDao;
-如果我们定义了name那么spring 就使用byName 方式注入
-如果我们定义了type 那么spring 就用byTyte方式注入
  如 : @Resource(name = "office1")   //自动注入bean Name= “office1” 的bean

       private Office office;



1. @Autowired



1) 对变量@Autowired,可以去掉setter()

2) @Autowired 默认是byType,所有有多个相同的bean 时,会出问题,要搭配@Qualifier

3) 它可以注释到变量,方法 以及 构造函数

4) 如果我们在spring 中配置了多个相同的类型时,而我们的注释又同时是通过byType时,那么spring 就会出错,它不知道哪个bean 是它要的。

可以将@Qualifier 和@Autowired
一起用 ; @Qualifier 只能和@Autowired结合使用,是对@Autowired有益的补充。一般来讲,@Qualifier对方法签名中入参进行注释会降低代码的可读性,而对成员变量注释则相对好一些。

2. JSR-250注释
@Resource
@PostConstruct
以及
@PreDestroy




1)
@Resource
的作用相当于
@Autowired
,只不过
@Autowired
按 byType 自动注入,面
@Resource
默认按 byName 自动注入罢了

name spring 将它解释成bean的名字

type spring 将它解释成bean 的类型

如果我们定义了name那么spring 就使用byName 方式注入

如果我们定义了type 那么spring 就用byTyte方式注入

如果两者都没有定义那么就默为byName

2)不管是通过实现
InitializingBean
/
DisposableBean
接口,还是通过 <bean> 元素的
init-method/destroy-method
属性进行配置,都只能为 Bean 指定一个初始化 / 销毁的方法。但是使用
@PostConstruct
@PreDestroy
注释却可以指定多个初始化 / 销毁方法,那些被标注
@PostConstruct

@PreDestroy
注释的方法都会在初始化 / 销毁时被执行。

3. 使用: <context:annotation-config />

AutowiredAnnotationBeanPostProcessor
CommonAnnotationBeanPostProcessor
就是处理这些注释元数据的处理器。但是直接在 Spring 配置文件中定义这些 Bean 显得比较笨拙。Spring 为我们提供了一种方便的注册这些
BeanPostProcessor
的方式,这就是 <context:annotation-config/>。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: