Глобальная обработка исключений в классе @Named весной

1

Я хочу обработать набор исключений в одном из классов, который аннотируется с помощью @Named.

Я использую актеров AKKA для параллелизма. Также используйте Hibernate.

В моем классе аккера Akka я вызываю методы спящего режима для операций вставки. Я хочу знать, как обрабатывать исключения во всех классах акторов во всем мире. Я могу сделать это с помощью @ExceptionHandler и @ControllerAdvice. Но я считаю, что он работает только на уровне @Controller.

Пример кода приведен ниже:

@Named("SaveDepartmentService") 
public class SaveDepartmentService extends BaseCommonService {

 @Autowired
 IDepartmentRepository departmentRepository;

 @Override
 public PartialFunction<Object, BoxedUnit> receive(){
    return ReceiveBuilder
            .match(Department.class, c->createOrUpdateDepartment(c))
            .build()
            .orElse(matchAny());
 }

 private void createOrUpdateDepartment(Department dept){
   // try{
         departmentRepository.insertOrUpdate(dept);
   // }catch (ConstraintViolationException e){
    //    System.out.println("-------------------------------");
     //   e.printStackTrace();
     //   wrap the exception and send as 
     //   sender().tell("Constarint_violation",self());
    //}
    sender().tell(dept, self());
 }  }

Я хочу обрабатывать ConstraintViolationException среди моих участников и отвечать сообщением (eg: sender().tell("CONSTRAINT_VIOLATION", self());). Я могу сделать то же самое, обработав его в блоке catch, но мне нужно дублировать его во всех классах актеров.

Есть ли способ справиться с этим, как @ControllerAdvice?

  • 0
    Почему вы смешиваете аннотации Spring MVC с аннотациями CDI? Не могли бы вы дать правильное объяснение вашего дизайна?
  • 0
    Как я уже сказал, мы используем актеров Акка. Слои как показано ниже: Контроллеры -> Сервисы (актеры akka) -> DAO (Hibernate). Когда приходит запрос, он вызывает связанный актер akka, который затем запрашивает базу данных и возвращает результат, используя Tell () актера
Показать ещё 3 комментария
Теги:
spring
hibernate
exception-handling
akka

1 ответ

0

Вы можете использовать обработчик исключений по умолчанию.

Установив обработчик исключаемых исключений по умолчанию, приложение может изменить способ обработки неперехваченных исключений (например, ведение журнала на конкретном устройстве или файле) для тех потоков, которые уже будут принимать любые "по умолчанию" поведение системы.

Но нет никакой разницы между CDI-Beans и Non-CDI-Beans (кстати: я использую его для автоматического увеличения уровня регистрации всех классов в Stacktraces)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню