Есть ли способ выполнить методы jax-rs внутри блока инициализации или другой функции?

#kotlin #servlets #jax-rs #init

Вопрос:

На данный момент я использую архитектуру для создания crud с помощью jax, используя методы @get, @post и так далее

 @Path("/users")
@Produces(APPLICATION_JSON)
@Consumes(APPLICATION_JSON)
class UsersService @Inject constructor(
    val users: Users,
    userDTOMapper: UserDTOMapper
) : CrudService<User, UserDTO, UserDTO>(
    repository = users,
    mapper = userDTOMapper
)
 

Однако я хотел бы удалить это наследование и работать с агрегацией для большей гибкости. Могло бы быть что-то вроде этого

 @Path("/users")
@Produces(APPLICATION_JSON)
@Consumes(APPLICATION_JSON)
class UsersService @Inject constructor(
    val users: Users,
    userDTOMapper: UserDTOMapper
)  {
    init {
        withReadOnlyOperations()

//        @GET
//        fun anotherTestMethod() : String{
//            return "Here JAX-RS can't find the method ;/"
//        }
    }
}

fun withReadOnlyOperations() {
    @GET
    fun readOnlyOperationTest() : String{
        return "hey"
    }
}
 

Есть ли какой-либо способ, которым мы можем работать с функциями внутри других или инициализировать маршруты в контексте, который я определяю вручную?

Я знаю, что вы можете работать с интерфейсами, однако я все равно создал бы стандартный код, который мне пришлось бы реализовать для каждой сущности, использующей этот интерфейс, уже с моделью наследования/агрегации У меня уже есть хорошо определенные и готовые к использованию методы.