How do I divide Dao and Dao-Cache into different modules?
Well if you want to distinct classes, you should create two classes:
class CahedDao {
  AppCache cache;
  getByKey(String)
} 

class DbDao {
  getByKeyFromDb(String)
}

Notes:
A. Codereview is to review working code, if you want to solve a problem you should better ask on stackexchange.
B. There are some issues in your code. Thanks to the DI and (bad) field injection you did not got them.