У меня есть простое приложение Dropwizard, и я хочу использовать в нем аннотацию HystrixCommand от javanica.Вот код:
HelloWorldResource.java
package sample;
import com.codahale.metrics.annotation.Timed;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import java.util.Optional;
@Path("/hello-world")
@Produces(MediaType.APPLICATION_JSON)
public class HelloWorldResource {
private final String template;
private final String defaultName;
public HelloWorldResource(String template, String defaultName) {
this.template = template;
this.defaultName = defaultName;
}
@GET
@Timed
public String sayHello(@QueryParam("name") Optional<String> name) throws Exception {
AnotherUser user = new AnotherUser();
return user.getName();
}
}
AnotherUser.java
package sample;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
public class AnotherUser{
private String name;
public AnotherUser() {
}
@HystrixCommand(commandKey = "someKey", fallbackMethod = "getTest")
public String getName() {
return "something";
}
public String getTest() {
return "Test";
}
public void setName(String name) {
this.name = name;
}
}
Но всякий раз, когда яНажав на сервер /hello-world
API, функция getName
в AnotherUser.java
выполняется в потоке dw-main (проверьте с помощью отладчика IntelliJ).
Я не могу определить точное решение проблемы.Я просмотрел много постов, но большинство из них использует Spring в качестве фреймворка, и я не могу понять его аспект AOP.
Пожалуйста, укажите точную ошибку и решение для нее.