Используя внедрение зависимостей, композиция, очевидно, является лучшим подходом, чем наследование
И дао как атрибут недостаточно для отношений родитель-потомок
Пожалуйста, убедитесь, что вы поняли пункт 16 вступления в силу Java, как любой программист может http://thefinestartist.com/effective-java/16
EDITED по запросу:
@Service
public class NotAChild{
@Autowired
CommonOps1 commonOps1;
@Autowired
CommonOps2 commonOps2;
private boolean commonMethod(){
int result1 = commonOps1.getDbResult();
int result2 = commonOps2.getDbResult();
....
return result1 + result2;
}
}
@Component
public class CommonOpS1{
@Autowired
CommonDao commonDao;
protected String getDbResult(){
commonDao.getResult1();
}
}
@Component
public class CommonOpS2{
@Autowired
CommonDao commonDao;
protected String getDbResult(){
commonDao.getResult2();
}
}
Все другие объекты NotAChildN могут использовать общий методы CommonOps.
Итак, вы не будете использовать наследование