Ответ 1
Аннотация @BeanParam
была введена в JAX-RS 2.0 в качестве агрегатора параметров (что означает, что ее нельзя использовать в JAX-RS 1.0).
Идея аннотации @BeanParam
заключается в том, чтобы иметь класс Java для агрегирования параметров, аннотированных аннотациями @XxxParam
. Следующие аннотации @XxxParam
могут использоваться для аннотирования полей класса агрегатора параметров:
Помимо полей, аннотированных аннотациями @XxxParam
, класс агрегатора параметров может иметь поля, аннотированные аннотацией @Context
. Для получения списка типов, которые могут быть введены с аннотацией @Context
, проверьте этот ответ.
Я считаю это просто вопросом удобства и предпочтения разработчиков. Во многих ситуациях класс для агрегирования параметров не требуется. Использование аннотаций @XxxParam
в параметрах метода очень удобно.
Но когда вам нужно повторно использовать параметры в разных методах или метод имеет много параметров, аннотированных аннотациями @XxxParam
, @BeanParam
подход @BeanParam
.
В своем вопросе вы упомянули принцип SOLID. Но не забывай принцип KISS :)
Начните с аннотаций @XxxParam
в параметрах вашего метода и не злоупотребляйте аннотацией @BeanParam
пытаясь решить проблему, которой у вас нет. Вы всегда можете реорганизовать свой код, чтобы создать класс агрегатора параметров, если вам это нужно.