Допустимо ли использовать цепочку методов при работе со службой, которая управляется инфраструктурой внедрения зависимостей (скажем, HK2)?
Я не уверен, разрешено ли «кешировать» экземпляр, даже если это только в рамках инъекции.
Пример сервиса, создающего пиццу:
@Service
public class PizzaService {
private boolean peperoni = false;
private boolean cheese = false;
private boolean bacon = false;
public PizzaService withPeperoni() {
peperoni = true;
return this;
}
public PizzaService withCheese() {
cheese = true;
return this;
}
public PizzaService withBacon() {
bacon = true;
return this;
}
public Pizza bake() {
// create the instance and return it
}
}
Здесь служба внедряется в ресурс JAX-RS:
@Path('pizza')
public class PizzaResource {
@Inject
PizzaService pizzaService;
@GET
public Response getPizza() {
Pizza pizza = pizzaService
.withPeperoni()
.withCheese()
.bake();
return Response.ok(pizza).build();
}
}