У меня есть веб-приложение на Java, использующее maven в качестве механизма сборки. Рассмотрим следующий код (слишком упрощенная версия моей ситуации), где контроллер вызывает службу для выполнения какой-либо операции, и он вызывает некоторые методы DAO для выполнения некоторых действий в БД.
class MyController extends Controller {
public ModelAndView handleRequest(... request) {
boolean performCheck = Boolean.valueOf(request.getParameter("doCheck"));
myService.doSomeAction(object)
return ...;
}
}
class MyService {
public void doSomeAction(Object o){
myDao.doSomething(o);
}
}
class MyDao exterds HibernateDaoSuppot {
boolean check;
public void doSomething(Object o){
if(check == true){
// some action
} else {
// some other action
}
}
}
Мой вопрос: как я могу изменить значение контрольного логического значения в методе Дао, основываясь на значении, которое я получаю в контроллере, без явной передачи логического значения через все слои? Я работаю с устаревшим кодом с большим количеством бизнес-логики, и бизнес-команда не уверена в том, чтобы слишком много модифицировать существующий код. Однако я свободен добавлять любые классы или аспекты, чтобы выполнить то же самое.
Я попытался прочитать стек вызовов в методе DAO и определить логическое значение несколькими уровнями выше, но мне не нравится работать со стеком вызовов, и я боюсь, что некоторые будущие изменения в архитектуре приложения или изменения JVM могут испортить стек вызовов.