One reason for using Inject would be that @Reference is a compile time annotation (i.e. RetentionPolicy.SOURCE). And due do that a new annotation TestReference is being used in Sling Testing component [1].
And as Inject is part of JSR 300 we can possibly have reference to such a class in the code. Chetan Mehrotra [1] http://svn.apache.org/viewvc/sling/trunk/testing/junit/core/src/main/java/org/apache/sling/junit/annotations/TestReference.java?view=markup On Tue, Mar 15, 2011 at 1:45 PM, Markus Joschko <[email protected]> wrote: > > I like the idea. > I just wonder if it might be a bit inconsistent to use @Inject when > most of the other code in a sling project (OSGI components) uses > @Reference. > As a developer I would appreciate consistency in how dependency > injection is done. > > Regards, > Markus > > On Tue, Mar 15, 2011 at 2:51 AM, Justin Edelson > <[email protected]> wrote: > > I was looking at how much code is involved in referencing an OSGi > > service from a script built using the scripting.java bundle and think > > it's a bit verbose: > > > > SlingBindings bindings = (SlingBindings) > > request.getAttribute(SlingBindings.class.getName()); > > SlingScriptHelper sling = bindings.getSling(); > > Interface service = sling.getService(Interface.class); > > > > I was thinking about adding some kind of annotation-based injection > > support so that you could replace these lines with just: > > > > > > @Inject > > private Interface service; > > > > public void service(request, response) { > > // some code using service > > > > } > > > > @Inject seems like the obvious candidate to support for this. WDYT? > > > > Justin > >
