Guice module integration issue with REST I have define one AOP guice based module, but when I tried to integrate with REST code, methodInvocation.proceed retun null. What might be best way to solve this issue.
Define AOP Guice based module as below
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@interface NotOnWeekends {}
public class WeekendBlocker implements MethodInterceptor {
public Object invoke(MethodInvocation invocation) throws Throwable {
Calendar today = new GregorianCalendar();
if (today.getDisplayName(DAY_OF_WEEK, LONG, ENGLISH).startsWith("S")) {
throw new IllegalStateException(
invocation.getMethod().getName() + " not allowed on weekends!");
}
return invocation.proceed();
}
}
public class NotOnWeekendsModule extends AbstractModule {
protected void configure() {
bindInterceptor(Matchers.any(), Matchers.annotatedWith(NotOnWeekends.class),
new WeekendBlocker());
}
}
But I tried to Integrate this with my REST API
public class WorkerBean implements Worker {
@Autowired
private WorkerRepository workerRepository;
@Override
@NotOnWeekends
public Collection<Worker> findAll() {
Collection<Worker> workers = workerRepository.findAll();
return workers;
}
@RestController
public class WorkerController {
@RequestMapping(
value = "/api/workers",
method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Collection<Worker>> getWorkers() {
Worker worker = Guice.createInjector(new NotOnWeekendsModule()).getInstance(Worker.class);
Collection<Worker> worker = worker.findAll(); // return null
....
}I think you problem is that you are mixing spring an guice (in an inappropriate way).
I reproduced your above example (by the way, can you tell me from which library you use Worker and WorkerRepository?).
The code is missing the binding for the worker. I added it.
Next problem is the @Autowire. This is a spring annotation and
Guice will not react to it.
If you replace it with @Inject the sample code is working as
expected. (By the way I would recommend to favor constructor
injection over field injection).
If this does not help. I would suggest you create a minimal reproducible case and publish it on a github repo so we can fiddle around with it.
--
You received this message because you are subscribed to the Google Groups "google-guice" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-guice...@googlegroups.com.
To post to this group, send email to google...@googlegroups.com.
Visit this group at https://groups.google.com/group/google-guice.
To view this discussion on the web visit https://groups.google.com/d/msgid/google-guice/cb641bf9-7ada-4021-aa73-20cfe1e15787%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Sorry I have no Spring experience what so ever. So I guess I will not be of any help here.
Hopefully someone else can jump in.
-- You received this message because you are subscribed to the Google Groups "google-guice" group. To unsubscribe from this group and stop receiving emails from it, send an email to google-guice...@googlegroups.com. To post to this group, send email to google...@googlegroups.com. Visit this group at https://groups.google.com/group/google-guice. To view this discussion on the web visit https://groups.google.com/d/msgid/google-guice/ee30385f-bf60-47ba-af5e-4f5af1bdfe2e%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.