@Autowired注入了dao,为什么还要写getDao(){return userDao}这个方法?有什么作用?

@Autowired
private UserDao userDao;

@Override
public BaseDao<User> getDao() {
    return userDao;
}

请问这个getDao有什么作用?  我试着删除这个getDao方法,一样可以运行,没问题,而且用Autowired已经注入了装配了bean交给了spring去管理。  求指导
阅读 4.2k
5 个回答

比如你写的代码叫UserService,有个其他的service依赖UserService同时也依赖UserDao,就不需要在这个service中对UserDao也@Autowired。
要是删除没问题就删了呗,其实并没有什么用。
顺便说一下,构造器注入比属性注入性能更好

自动生成的代码,没什么用。

不用这个,反射完全可以跨越访问权(private)给字段设置值,所以set方法其实不需要也可以。

新手上路,请多包涵

你这个应该是重写的父类BaseDao的方法getDao(),其目的是 供给在父类BaseDao中定义的方法以获得Dao对象
比如说,父类中有一个方法

public void test(BaseEntity entity){
    getDao().insert(entity);//在这里,父类通过getDao可以获取子类的Dao实现多态
}

此时你如果把这个重写的方法删去就会出现问题

不知道用的什么版本的spring
推荐构造器注入

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题