#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"
}
}
Есть ли какой-либо способ, которым мы можем работать с функциями внутри других или инициализировать маршруты в контексте, который я определяю вручную?
Я знаю, что вы можете работать с интерфейсами, однако я все равно создал бы стандартный код, который мне пришлось бы реализовать для каждой сущности, использующей этот интерфейс, уже с моделью наследования/агрегации У меня уже есть хорошо определенные и готовые к использованию методы.