【问题标题】:Dropwizard: integration of Google GuiceDropwizard:集成 Google Guice
【发布时间】:2016-05-21 23:57:44
【问题描述】:

我尝试通过 Google Guice 在 DropWizard 中使用依赖注入,但我遇到了很多问题。所以我编写了一个如下所示的简单代码来找到主要问题。错误在 Test 类中,行 :testservice.Result (10,10,10)。 - 标记“(”的语法错误,此标记后应为 { - 标记上的语法错误,预期为 ConstructorHeaderName 反而 - 标记“结果”的语法错误,无效的 AnnotationName

为什么我不能使用对象 testservice ?

感谢您的帮助。

package dropwizard.GoogleGuiiice;
import io.dropwizard.Application;
import io.dropwizard.setup.Bootstrap;
import io.dropwizard.setup.Environment;

public class GoogleGuiiiceApplication extends Application<GoogleGuiiiceConfiguration> {
public static void main(final String[] args) throws Exception {
    new GoogleGuiiiceApplication().run(args);
}
@Override
public String getName() {
    return "GoogleGuiiice";
}
@Override
public void initialize(final Bootstrap<GoogleGuiiiceConfiguration> bootstrap) {
    // TODO: application initialization
}
@Override
public void run(final GoogleGuiiiceConfiguration configuration,
                final Environment environment) {
    // TODO: implement application
    environment.jersey().register(new Test ());
}

}

import com.google.inject.Guice;
import com.google.inject.Injector;

public class Test {
Injector guice=Guice.createInjector(new OperationModule());
TestService testservice=guice.getInstance(TestService.class);   
testservice.Result (10,10,10);

}

public interface Operation {
int getResult(int a, int b);

}

public class Somme implements Operation{
@Override
public int getResult(int a, int b){
    return a+b;
}

}

public class OperationModule extends com.google.inject.AbstractModule{
@Override
protected void configure(){
    bind(Operation.class).to(Somme.class);
}

}

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import com.google.inject.Inject;
public class TestService {
@Inject
Operation Op;

@GET
@Path("{a}/{b}")
public int Result (int c, @PathParam(value="a")int a, @PathParam(value="b")int b){
    int SommeFinale=c + Op.getResult(a,b);
    return SommeFinale;
}

}

【问题讨论】:

    标签: maven guice dropwizard guice-3


    【解决方案1】:

    我不清楚您在这里实际尝试做什么,但从纯粹的 Java 角度回答您的问题,语法错误仅仅是因为您不允许在代码中执行任意语句。

    如果您确实希望在此时执行该语句,那么您要么需要将其包裹在花括号中,以便它位于初始化程序块中,但考虑到结果被丢弃,这可能毫无意义

    p>
    {
      testService.Result(10,10,10);
    }
    

    或者你需要将结果分配给一个字段

    int useMe = testService.Result(10,10,10);
    

    其他选项是您可以在 Test 类的构造函数或方法中执行语句。

    【讨论】:

      【解决方案2】:

      我希望本教程可以提供帮助。 Dropwizard and Guice Integration

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多