java - Spring @Autowired:自动装配接口如何工作
问题描述
当实现类扩展另一个类时,请帮助我了解自动装配如何与 Spring 中的接口一起使用。由于我们无法在Java中为接口创建对象,我的理解是Spring在使用@Autowired注解时会注入实现类的实例。在以下情况下,为什么在 TestServiceImpl 中自动装配 TestDAO 时无法调用继承方法( TestDAOImpl->save() )?
Interface CommonDAO
{
save();
}
Class CommonDAOImpl implements CommonDAO
{
// define save();
}
Interface TestDAO
{
User createUser ()
}
class TestDAOImpl extends CommonDaoImpl{
//define createUser()
}
class TestServiceImpl implements TestService{
@Autowired
TestDAO testDao
public User createUser(){
//Able to call testDao.createUser();
//Why I am not able to call call testDao.save()?
//what is actually happening when autowiring interface? Spring not injecting instance for TestDAOImpl in this case?
}
}
解决方案
你说的是DAO层的两个维度,但是你只使用了其中一个,并且它们没有任何关联(继承、扩展、内部调用),以确保你理解范围内的范围和类之间的接口概念稍后再试,比如可以让一个子类继承CommonDAO,同时继承TestDAO,虽然这不符合单一职责原则,但是为了让你更好理解,可以试试
推荐阅读
- imagej - ImageJ TIFF 导入图像尺寸?
- reactjs - 函数中的上下文更新和显示问题
- ios - 静态成员“负载”不能用于“AppDelegate”类型的实例
- android - 模块“base”和“instantapp”包含具有不同内容的条目“assets/crashlytics-build.properties”
- php - Symfony WHERE-SQL - “SQLSTATE [42000]:语法错误”
- c - 调用 snprintf 的正确方法是什么?
- netlogo - 将海龟移动到具有相同类型海龟的一些邻居的补丁并留在那里
- python - 添加散景滑块以按年份可视化 GIS 数据
- angular - 我们可以在静态服务器上移动 node_modules 来构建 Angular 应用程序吗?
- php - 从 INSERT 语句返回 id 时 PDO::fetch 很慢