美文网首页
@Autowired和@Resource的区别

@Autowired和@Resource的区别

作者: 窗外星河低悬im | 来源:发表于2022-01-05 11:14 被阅读0次

@Autowired默认按照byType自动装配,required默认为true,表示开启自动装配。

public  interface UserService{
}

@Service
public class User1 implements UserService{
}

@Service
public class User2 implements UserService{
}


public class TestServiceImpl implements TestService{

@Qualifier("user1")
@Autowired
private UserSerive userService;

}

当类是单例,却有多个对象时,这时需要配合@Qualifier,指定名称进行装配。

public  interface UserService{
}

@Primary
@Service
public class User1 implements UserService{
}

@Service
public class User2 implements UserService{
}


public class TestServiceImpl implements TestService{

@Autowired
private UserSerive userService;

}

在一个对象上使用@Primary,当我们使用自动配置的方式装配Bean时,如果这个Bean有多个对象,其中一个对象具有@Primary注解修饰,该对象会被选中,作为自动装配的值。

@Autowired的作用范围:构造器、参数、方法、成员变量、注解。

@Autowired和@Resource的区别:

①@Autowired由Spring提供,默认按照byType自动装配;@Resource由J2EE提供,默认按照byName自动装配。

②@Autowired如果想使用名称装配结合@Qualifier注解进行使用。@Resource默认按照名称装配,名称可以通过name属性指定,如果没用指定name属性,当注解写在字段上时,默认取字段名进行查找。如果注解写在setter方法上默认取属性名进行装配。当找不到名称匹配的bean时才按照类型进行装配。如果name属性一旦指定,就只会按照名称进行装配。

③@Autowired用在构造方法、参数、方法、成员变量、注解上,@Resource用在类、成员变量、方法上

相关文章

网友评论

      本文标题:@Autowired和@Resource的区别

      本文链接:https://www.haomeiwen.com/subject/fpyhcrtx.html