温馨提示×

autowired如何根据类名注入

小亿
87
2023-12-22 20:23:17
栏目: 编程语言

@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字段中。

0