@Autowired注解是Spring框架中用来自动装配Bean的注解,它有多种用法,其中之一就是根据类名注入。
在使用@Autowired注解时,如果没有指定具体的Bean名称,Spring会根据变量的类型来进行自动装配。当有多个符合类型的Bean时,Spring会优先选择与变量名相同的Bean进行注入。如果找不到与变量名相同的Bean,则会选择与变量类型相同的Bean进行注入。
以下是一个示例:
@Service
public class UserService {
@Autowired
private UserDao userDao;
}
@Repository
public class UserDao {
// ...
}
在上面的示例中,UserService类中的userDao字段使用了@Autowired注解进行自动装配。由于变量名与Bean名称不同,Spring会根据变量类型进行注入,因此会将UserDao类型的Bean注入到userDao字段中。
需要注意的是,如果有多个与变量类型相同的Bean,Spring会抛出异常,表示无法确定应该注入哪个Bean。此时可以通过使用@Qualifier注解来指定具体的Bean名称。
@Service
public class UserService {
@Autowired
@Qualifier("userDaoImpl")
private UserDao userDao;
}
@Repository("userDaoImpl")
public class UserDaoImpl implements UserDao {
// ...
}
@Repository("userDaoDummy")
public class UserDaoDummy implements UserDao {
// ...
}
在上面的示例中,通过@Qualifier注解指定了要注入的Bean名称为"userDaoImpl",这样就可以确保将UserDaoImpl类型的Bean注入到userDao字段中。