@Autowired和@Resource的区别

@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用在类、成员变量、方法上

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容