@Autowired与@Resource注解的区别
@Autowired
全路径为:org.springframework.beans.factory.annotation.Autowired,为spring提供的注解
@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE})@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Autowired {
boolean required() default true;
}
@Autowired采取的策略为按照类型(byType)注入。默认情况下要求依赖必须存在,如果允许为null值,可以设置他的required属性为false。
如果想按照名称来装配,需要结合@Qualifier注解一起使用。
public class UserserviceImpl{ @Autowired
@Qualifier("userMapper")
private UserMapper userMapper;
}
@Resource
全路径为:javax.annotation.Resource
@Resource默认按照ByName自动注入,由J2EE提供
@Target({TYPE, FIELD, METHOD})@Retention(RUNTIME)
public @interface Resource {
String name() default "";
String lookup() default "";
Class<?> type() default java.lang.Object.class;
enum AuthenticationType {
CONTAINER,
APPLICATION
}
AuthenticationType authenticationType() default AuthenticationType.CONTAINER;
boolean shareable() default true;
String mappedName() default "";
String description() default "";
}
@Resource有两个重要的属性,name和type,spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。如果既不指定name也不指定type,则默认按照byName自动注入。如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配。
参考博文:
- https://www.cnblogs.com/williamjie/p/9198157.html
- https://www.cnblogs.com/jichi/p/10073404.html
以上是 @Autowired与@Resource注解的区别 的全部内容, 来源链接: utcz.com/z/514314.html