您好我是新的游戏框架,我们的团队正在计划使用mongodb.我找到了两个驱动程序,Mongo Scala Driver和Reactive-Mongo,它们都是非阻塞和异步的.
它们之间有什么区别?
我在"路线"文件中有这个:
POST /accounts/ controllers.AccountsController.createOneAccount
Run Code Online (Sandbox Code Playgroud)
在我的AccoutsController.java中:
package controllers;
import com.google.inject.Inject;
import play.Application;
import play.mvc.Controller;
import play.mvc.Result;
import services.AccountService;
import java.io.IOException;
public class AccountsController extends Controller {
@Inject
private Application application;
final String host = application.configuration().getString("db.default.host");
final int port = application.configuration().getInt("db.default.port");
final String dbName = application.configuration().getString("db.default.dbname");
@Inject
private AccountService accountService;
public Result createOneAccount() throws IOException {
return accountService.createOneAccount(request().body().asJson());
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码编译得很好,但在运行时我遇到这样的错误:
ProvisionException:无法配置,请参阅以下错误:1)在controllers.AccountsController.(AccountsController.java:11)注入构造函数,java.lang.NullPointerException,
同时在router.Routes中找到参数1的controller.AccountsController.(路由. scala:28)定位router.Routes同时定位play.api.inject.RoutesProvider,同时在play.api.http.JavaCompatibleHttpRequestHandler.(HttpRequestHandler.scala:200)找到参数0的play.api.routing.Router,同时找到play. api.http.JavaCompatibleHttpRequestHandler,同时在play.api.DefaultApplication.(Application.scala:221)的play.api.DefaultApplication.(Application.scala:221)中找到参数4的play.api.http.HttpRequestHandler,同时定位播放.定位play.api.Application 1错误时api.DefaultApplication
我可以通过将@添加到routes文件来解决这个问题:
POST /accounts/ @controllers.AccountsController.createOneAccount
Run Code Online (Sandbox Code Playgroud)
但我不确定为什么我需要这样做,以及如何避免'@'.请提出一些建议.