xvik / dropwizard-guicey

Dropwizard guice integration
http://xvik.github.io/dropwizard-guicey/
MIT License
232 stars 49 forks source link

Dropwizard UnitOfWork Guice Interceptor #42

Open amr opened 7 years ago

amr commented 7 years ago

Hi,

This is my first submission to this project so allow me to begin by saying: Thank you for the awesome work.

Now, Dropwizard's @UnitOfWork only works on jersey resources by default. To get them to work for methods on classes that are not jersey resources, you have to manually instantiate such classes by running them through UnitOfWorkAwareProxyFactory. Example from Dropwizard docs:

SessionDao dao = new SessionDao(hibernateBundle.getSessionFactory());
ExampleAuthenticator exampleAuthenticator = new UnitOfWorkAwareProxyFactory(hibernateBundle)
               .create(ExampleAuthenticator.class, SessionDao.class, dao);

This of course goes against what we aspire to achieve by using a DI such as Guice.

Since guice has AOP I think this awesome bundle can ship optional support for @UnitOfWork outside resources, using Guice AOP.

Here is an example of such Guice module (briefly tested and it works): https://stackoverflow.com/a/38267726/43597

It can even just be included in the Hibernate example in the docs. I'd be happy to provide a PR if this deems plausible.

xvik commented 7 years ago

Hi! Yes, it would be great if you provide a PR for the hibernate example. Please include extra test (to check that feature is working), if possible.

oeddyo commented 4 years ago

this is actually quite amazing. I tried it and it actually works :D

Do you think it's feasible to add it into Guicey or a standalone example should be enough? @xvik

oeddyo commented 4 years ago

nvm I thought I get it working in my test case...

xvik commented 4 years ago

Ideally, it should be improved and become a guicey-ext module to simplify configuration. And I'm thinking about it time-to-time, but there is always something more important to do.

For now, there is only a basic hibernate example