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