阅读量:9
@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字段中。