Я бы сказал, используйте вариант 1, но если я неправильно истолковываю ваше описание, похоже, вы пытаетесь написать код внутри формы пространства имен?Это не то, что вы хотите.Когда вы добавляете gen-класс в форму пространства имен, для всего этого пространства имен будет создан класс Java.Затем вы можете переопределить методы, назвав свои функции в этих ns с помощью -prefix (или выберите другой и используйте: method-prefix).
Вот пример.Я не знаю достаточно о библиотеках, которые вы используете, чтобы протестировать его с этими классами, но он должен быть как минимум похожим:
(ns com.myapp.MyService
(:gen-class
:extends com.yammer.dropwizard.Service
:exposes-methods {someSuperClassMethod someLocalAlias}))
;; now just write your code as normal, note that
;; you can access super-class methods with the exposes-methods
;; map above!
;; prefix your overriden methods with -
(defn -overriddenMethod
[params]
... )
Надеюсь, это поможет!