Nano Hash - криптовалюты, майнинг, программирование

Java Play 2.5.10, как внедрить play-jongo

У меня следующая модель:

public class Users {

    public static PlayJongo jongo = Play.current().injector().instanceOf(PlayJongo.class);

    public static MongoCollection users() {
        return jongo.getCollection("DB.users");
    }
..
..

public static Users authenticate(String email, String password) {
        Users user = users().findOne("{email: #, removed: false}", email).as(Users.class);

        if (user != null) {
            if (HomeController.checkPassword(password, user.password)) {
                return user;
            }
        }

        return null;
    }
..

Я использую это в своих контроллерах как:

public Result authenticate() {
        DynamicForm requestData = Form.form().bindFromRequest();
        String email = requestData.get("email").trim();
        String password = requestData.get("password").trim();
        Users user = Users.authenticate(email, password);
        if (user == null) {
            flash("danger", "Incorrect email or password.");
            return redirect(routes.HomeController.login());
        }
        session("email", user.getEmail());
        session("role", user.getRole());
        session("fullname", user.getLastname() + " " + user.getFirstname());
        session("id", user.getId().toString());

        return redirect(routes.HomeController.index());
    }

Я пробовал много комбинаций использования инъекций с плей-джонго безрезультатно. Например.

@Inject
public  PlayJongo jongo;

public  MongoCollection users() {
          return jongo.getCollection("DocBox.users");
}

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

  public class HomeController extends Controller {

  @Inject
  public Users users;
  .
  .

и попробуйте вызвать метод Users:

   Users user = users.authenticate(email, password);

Я получаю исключение org.jongo.marshall.MarshallingException. Мой мозг окончательно перегревается, кто-нибудь может объяснить мне, как использовать Injection с плей-джонго?


Ответы:


1

Я решаю проблему. Теперь у меня есть UsersRepository, который содержит методы, работающие с коллекцией монго (аутентификация, addUser и др.). И объект Users, который содержит только фактические поля data (имя, фамилия, адрес электронной почты и т. д.).

После этого я могу внедрить UsersRepository в свой контроллер и везде использовать этот единственный экземпляр.

Спасибо Грегу Метвину, техническому руководителю, Play Framework

15.12.2016
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..