Thanks. This is for sure a reason to consider HK2 which we already use. I struggle a bit with un-winding the current class-dependency graph of Solr to figure out where it makes most sense to start a POC. I think perhaps injecting singleton CoreContainer could be a nice start. Do you know of a tool that generates some sort of class diagram one could use to find hotspots, cyclic references etc?
Jan > 26. sep. 2023 kl. 22:00 skrev Jason Gerlowski <gerlowsk...@gmail.com>: > > +1 to experimenting with DI! > > One thing that should probably be incorporated into the SIP and > resolved at some level is that Solr does have some "non-homegrown" DI > currently. Jersey, the JAX-RS framework we're using to serve our v2 > APIs, allows some minimal DI in the resource classes that it > instantiates by its use of a library called "HK2" (which implements > JSR330). [1]. We don't do too much fancy with this - mostly just > injecting already-existing "SolrCore" and "CoreContainer" objects into > API classes. > > That's about as far as my knowledge goes, unfortunately. I imagine > we'd want to use a single JSR330 implementation throughout Solr if we > want to expand our use of DI, but I can't weigh in much on the > tradeoffs of picking HK2 vs Dagger vs <other>. Hopefully Jersey allows > users to swap out other JSR330 implementations, but I can't say for > certain. > > Best, > > Jason > > [1] https://javaee.github.io/hk2/ > > On Tue, Sep 26, 2023 at 9:08 AM Justin Sweeney > <justin.sweene...@gmail.com> wrote: >> >> +1 on this SIP and a POC would make sense. I think it could be >> valuable to update the Motivation section with the anticipated value >> provided by this SIP, i.e. reduced code maintenance, removing brittle >> home-grown interfaces, etc. Most of my IOC/DI experience is with >> Spring and Dagger seems like a better choice here given the size and >> complexity of the Spring libraries. >> >> On Tue, Sep 26, 2023 at 8:30 AM Jan Høydahl <jan....@cominvent.com> wrote: >>> >>> This is the discuss thread for SIP-19 >>> >>> JIRA: https://issues.apache.org/jira/browse/SOLR-16998 >>> SIP link: >>> https://cwiki.apache.org/confluence/display/SOLR/SIP-19+Adopt+JSR-330+dependency+injection >>> >>> Use a standardized dependency injection in Solr instead of our home grown >>> @SolrCoreAware, @ResourceLoaderAware, @SchemaAware etc. >>> Proposal is to do a trial with Dagger2 (https://github.com/google/dagger) >>> which is a compile-time depenency injection framework. >>> >>> Let's keep discussion here on the list. >>> SIP document will be kept up to date with feedback from this discussion >>> Code discussion on the JIRA (if/when we get there) >>> >>> >>> I do not have any expereince with Dagger myself, and have not done any >>> deeper analysis of feasibility, or whether another framework is more >>> suitable for our use. I think first step would be a POC with a limited >>> scope. >>> >>> Jan >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: dev-unsubscr...@solr.apache.org >>> For additional commands, e-mail: dev-h...@solr.apache.org >>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: dev-unsubscr...@solr.apache.org >> For additional commands, e-mail: dev-h...@solr.apache.org >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@solr.apache.org > For additional commands, e-mail: dev-h...@solr.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@solr.apache.org For additional commands, e-mail: dev-h...@solr.apache.org