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