Динамически добавлять классы в Guice с помощью отражения - PullRequest
2 голосов
/ 29 марта 2012

Возможно ли с Guice (и даже в Java в целом) перебирать все классы в конкретном пакете и добавлять их в Guice?

Основная проблема: я хотел бы иметь возможность маршрутизироватьвесь трафик к / admin / * одному сервлету, который перенаправляет соответственно.Тогда я хотел бы иметь возможность просто добавлять сервлеты в один и тот же пакет и получать их автоматически.Например, если я перейду к / admin / showCompanyDetails, я бы хотел, чтобы он перенаправил сервлет с именем showCompanyDetails.java в пакет администратора.

Кроме того, я бы хотел, чтобы это работало таким образом, чтобы всеМне нужно сделать, чтобы добавить дополнительные функции администратора, чтобы добавить новый класс в пакет администратора.Т.е. нет фабричных методов для обновления и нет контейнеров для добавления.

До сих пор самое близкое, что я получил, - это чтобы сервлет перенаправления создал инжектор Guice с модулем, который содержит все сервлеты администратора.Но, как я уже сказал, я бы хотел избежать обновления модуля Guice.

Кроме того, я бы хотел, чтобы это было возможно в AppEngine.

И я хочу пони.

1 Ответ

0 голосов
/ 29 марта 2012

Возможны следующие варианты:

  • Используйте аннотации Servlet 3 @WebServlet в ваших классах сервлетов, чтобы они попадали в веб-контейнер Servlet 3.Затем вы можете использовать Guice для внедрения зависимостей, см. здесь , например.
  • Используйте guice-automatic -jection , чтобы связать ваши классы сервлетов в вашем classpath (они должнысодержать их путь, аналогичный сервлету 3, с помощью аннотаций или предоставить к ним доступ).Затем вы можете создать модуль сервлета Guice, который извлекает все эти сервлеты из Guice и регистрирует их как сервлеты по указанным путям.

Оба способа могут быть использованы в AppEngine, но у меня нет опыта работы с ними.Это.

Получить пони легко, если вы используете Object в качестве базового класса; p

...