微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java Playframework GlobalSettings弃用onStart

如何解决Java Playframework GlobalSettings弃用onStart

您需要两个类-一个用于处理初始化的类,以及一个用于注册绑定的模块。

初始化代码

@Singleton
public class OnStartup {

    @Inject
    public OnStartup(final UserService userService) {
        if (userService.findUserByEmail("email@company.com") == null) {
            String email = "email@company.com";
            String password = "1234";
            String fullName = "My Name";
            User user = new User();
            user.password = BCrypt.hashpw(password, BCrypt.gensalt());
            user.full_name = fullName;
            user.email = email;
            user.save();
        }
    }
}

模块:

public class OnStartupModule extends AbstractModule {
    @Override
    public void configure() {
        bind(OnStartup.class).asEagerSingleton();
    }
}

最后,将模块添加到中application.conf

play.modules.enabled += "com.example.modules.OnStartupModule"

通过使单身人士渴望,它将在应用程序启动时运行。

解决方法

我对Playframwork已过时的GlobalSettings问题有一个烦人的问题,我想将conde移入onStart建议的方式,但是实际上我无法完成此任务,文档没有意义,而且我也不知道如何解决此问题,我花了几天时间数天试图使它没有运气!

https://www.playframework.com/documentation/2.5.x/GlobalSettings

我只想运行初始数据库方法

private void initialDB() {
        UserService userService = play.Play.application().injector().instanceOf(UserService.class);
        if (userService.findUserByEmail("email@company.com") == null) {
            String email = "email@company.com";
            String password = "1234";
            String fullName = "My Name";
            User user = new User();
            user.password = BCrypt.hashpw(password,BCrypt.gensalt());
            user.full_name = fullName;
            user.email = email;
            user.save();
        }
}

这是java文件中的内部onStart方法Global extends GlobalSettings,我尝试将其提取到外部模块,但没有运气。

public class GlobalModule extends AbstractModule {

    protected void configure() {
        initialDB();
    }
}

我在Scala中找到了一些解决方案,不知道在Java中如何实现,但是我没有时间去学习它,除此之外,我也不喜欢它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。