javaresource注解_关于java中的@Resource注解和
@Autowired注解
@Resource (建议⽤)
类全称: javax.annotation.Resource
默认注⼊⽅式: byName(反射机制)
指定注⼊⽅式:
a) 如果使⽤name属性,则使⽤byName⾃动注⼊策略--> @Resource(name = "good")
b) 如果使⽤type属性,则使⽤byType⾃动注⼊策略--> @Resource(type = java.lang.String.class)
Bean查规则:
a) 同时指定了name和type, 则在Spring上下⽂中到唯⼀匹配的Bean, 不到抛出异常--> @Resource(name = "good", type =
java.lang.String.class)
b) 指定了name, 则在Spring上下⽂中到名称(使⽤注解注册的Bean的name⼀般为类名称的驼峰写法)匹配的Bean进⾏装配,不到或者到多个则抛出异常-->@Resource(name = "good")
c) 指定了type, 则在Spring上下⽂中到匹配的唯⼀Bean进⾏装配, 不到或者到多个则抛出异常-->@Resource(type =
java.lang.String.class)
d) 没有指定name或者type, 按照byName进⾏查装配, 如果没有匹配, 则回退到⼀个原始类型(⽐如String hello变量的原始类型就是java.lang.String)进⾏匹配(根据type匹配原始类型), 不到或者到多个则抛出异常 .
@Autowired
resource和autowired注解的区别类全称: org.springframework.beans.factory.annotation.Autowired
默认注⼊⽅式: byType
Bean查规则:
a) 默认是要对象必须存在的, 如果允许对象为null, 则要设置 required = false
b) 如果是根据类型查, 有多个相同类型(is-a)的实现类,那么会抛出异常 , 此时需要加上@Qualifier("hello")注解指定注⼊的Bean的标识名称(不⼀定特指id或者name,就是指的@Service("thisTarget")中的thisTarget这个值,也不排除没有这个值⾃动查其id或者name的可能性), 则按照标识名称去查,若有多个相同名称的Bean,则抛出异常.
注意:@Autowired  有时候会出现警告
Spring属于第三⽅的,J2EE是Java⾃⼰的东西。使⽤@Resource可以减少代码和Spring之间的耦合。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。