Re: Declarative Services vs Spring
Subbarao Meduri <
mkv@...>
2006-03-01 15:42:12 GMT
Agreed that OSGi is a more dynamic platform, and thus could say constructor injection is not the best thing that components should implement. However, if you take the view that OSGi is also a integration platform for components (where you don't necessarily have control over how a component is designed), it would make sense to me that declarative services support constructor injection. Obviously, it would not be a best practice, but it at least it will not inhibit a component that is not designed to leverage OSGi dynamic features from being integrated into the framework.
Thoughts ?
Subbarao
"Neil Bartlett" <neil <at> integility.com>
"Neil Bartlett" <neil <at> integility.com> Sent by: equinox-dev-bounces-j9T/66MeVpFAfugRpC6u6w@public.gmane.org
03/01/2006 10:21 AM
Please respond to
Equinox development mailing list <equinox-dev-j9T/66MeVpFAfugRpC6u6w@public.gmane.org> |
|
To
|
"Equinox development mailing list" <equinox-dev-j9T/66MeVpFAfugRpC6u6w@public.gmane.org> |
cc
|
|
Subject
|
Re: [equinox-dev] Declarative Services vs Spring |
|
I think that's intentional. With OSGi you always have to be aware that
the services you depend on might go away, and possibly come back again
later. That's the essence of OSGi - it's dynamic. In this context an
"immutable final service reference" is an oxymoron.
Spring lives in a comfortable static world where dependencies, once
supplied, will live for at least as long as the things that depend on
them. In OSGi, that kind of assumption is only really valid for
intra-bundle dependencies. DS on the other can handle dynamic
inter-bundle dependencies, which IMHO makes it much more powerful.
On the other hand Spring has much more to it than dependency
injection. It also has a number of very powerful libraries, eg for
developing DAOs using JDBC or O/R mappers, an AOP library, remoting
libraries, etc. Because Spring is wonderfully modular, you can use as
much or as little of it as you like (just like Eclipse!).
- Neil
On 3/1/06, Subbarao Meduri <mkv-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org> wrote:
>
>
> How does declarative services fare when compared with Spring framework in
> terms of its injection capabilities ? My apologies if this is already
> discussed on this forum.
>
> Is there a reason why declarative services does not support constructor
> injection, for example ? It seems constructor injection is the only way to
> initialize a component that holds a immutable (final) service reference
> injected via its constructor.
>
> Appreciate your thoughts.
>
> Regards,
> Subbarao



<div>
<p>Agreed that OSGi is a more dynamic platform, and thus could say constructor injection is not the best thing that components should implement. However, if you take the view that OSGi is also a integration platform for components (where you don't necessarily have control over how a component is designed), it would make sense to me that declarative services support constructor injection. Obviously, it would not be a best practice, but it at least it will not inhibit a component that is not designed to leverage OSGi dynamic features from being integrated into the framework.<br><br>
Thoughts ?<br>
Subbarao<br><br>"Neil Bartlett" <neil <at> integility.com><br><br><br></p>
<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr valign="top">
<td width="40%">
<ul><ul><ul><ul>"Neil Bartlett" <neil <at> integility.com> <br>Sent by: equinox-dev-bounces@...
<p>03/01/2006 10:21 AM
</p>
<table border="1"><tr valign="top"><td width="168" bgcolor="#FFFFFF"><div align="center">Please respond to<br>
Equinox development mailing list <equinox-dev@...></div></td></tr></table>
</ul></ul></ul></ul>
</td>
<td width="60%">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<td width="1%">
<br><div align="right">To</div>
</td>
<td width="100%">
<br>"Equinox development mailing list" <equinox-dev@...></td>
</tr>
<tr valign="top">
<td width="1%">
<br><div align="right">cc</div>
</td>
<td width="100%"><br></td>
</tr>
<tr valign="top">
<td width="1%">
<br><div align="right">Subject</div>
</td>
<td width="100%">
<br>Re: [equinox-dev] Declarative Services vs Spring</td>
</tr>
</table>
<table border="0" cellspacing="0" cellpadding="0"><tr valign="top">
<td width="58"></td>
<td width="336"></td>
</tr></table>
</td>
</tr></table>
<br>I think that's intentional. With OSGi you always have to be aware that<br>
the services you depend on might go away, and possibly come back again<br>
later. That's the essence of OSGi - it's dynamic. In this context an<br>
"immutable final service reference" is an oxymoron.<br><br>
Spring lives in a comfortable static world where dependencies, once<br>
supplied, will live for at least as long as the things that depend on<br>
them. In OSGi, that kind of assumption is only really valid for<br>
intra-bundle dependencies. DS on the other can handle dynamic<br>
inter-bundle dependencies, which IMHO makes it much more powerful.<br><br>
On the other hand Spring has much more to it than dependency<br>
injection. It also has a number of very powerful libraries, eg for<br>
developing DAOs using JDBC or O/R mappers, an AOP library, remoting<br>
libraries, etc. Because Spring is wonderfully modular, you can use as<br>
much or as little of it as you like (just like Eclipse!).<br><br>
- Neil<br><br><br>
On 3/1/06, Subbarao Meduri <mkv@...> wrote:<br>
><br>
><br>
> How does declarative services fare when compared with Spring framework in<br>
> terms of its injection capabilities ? My apologies if this is already<br>
> discussed on this forum.<br>
><br>
> Is there a reason why declarative services does not support constructor<br>
> injection, for example ? It seems constructor injection is the only way to<br>
> initialize a component that holds a immutable (final) service reference<br>
> injected via its constructor.<br>
><br>
> Appreciate your thoughts.<br>
><br>
> Regards,<br>
> Subbarao<br><br><br>
</div>