Я реализую приложение с несколькими арендаторами. Многие из моих ресурсов имеют такие пути, как «/ api/tenant/{tenant_id}/resource/path /». То, что я хотел бы сделать, - это добавить в ресурс разные DAO (или, возможно, другие объекты) на основе параметра пути {{tenant_id}.Jersey 2. * & HK2. Внедрить другой объект (например, DAO) на основе параметра пути
У меня есть два неоптимальные идеи о том, как достичь что-то подобное:
Используйте класс-оболочку, как это:
class SomeDAOWrapper { SomeDAO getSomeDAO() { return new SomeDAO(tenantId_m); // Alternatively we could store the DAOs in some hash-table // with tenantId_m as the key. } @PathParam("tenant_id") private long tenantId_m; }
Тогда в моем классе ресурсов я бы
SomeDAOWrapper
как атрибут аннотированный с@BeanParam
.Используйте локатор подресурсов на пути «/ api/tenant/{tenant_id}», который вернет ресурсы с правильными DAO.
Любые другие идеи? В идеале я хотел бы просто добавить атрибут SomeDAO
в свой класс ресурсов, который аннотируется с помощью @Inject
или что-то подобное (и это будет использовать некоторую фабрику, которая учитывает параметр пути tenant_id
).
Это похоже на жизнеспособный подход, спасибо. – TheCuriousOne