Ramkumar R wrote:
Hi All,
I came across this requirement, while working with Spring, but I believe this topic also holds good for Java implementations.

Spring supports Constructor Injection by allowing to inject properties and objects via the constructors. Not sure if Tuscany should support this feature? As SCA+Spring depends on Tuscany runtime for binding and dependency injections.

I believe currently Tuscany supports injection of service references through getter & setter methods.

This question arises because the biggest benefit of setter injection is that it allows for circular dependencies. Circular dependencies are actually pretty common. If you have a UserService that needs to get information about an employer from CompanyService and the CompanyService needs information about employees from UserService, right there you have a circular dependency. In general I find a lot of circular dependencies between service methods, but with complex object models it is possible to have circular dependencies elsewhere.

So considering the circular dependency issue, I believe it would be a bad idea to support the same in Tuscany.

Like to hear from the community for more insight on this topic and how we should go about it.

--
Thanks & Regards,
Ramkumar Ramalingam

Folks,

The SCA Java specification explicitly supports constructor based injection of both properties and references, so Tuscany should support this.

From the OASIS SCA Java specification - sca-javacaa-1.1-spec-cd01.pdf
Lines 94-97:

2.1.4 @Reference
Accessing a service using reference injection is done by defining a field, a setter method parameter, or a constructor parameter typed by the service interface and annotated with an @Reference annotation

- note the explicit description of "constructor parameter"

This is made clear in the formal definition of the @Reference annotation in 
section 8.15 (line 1375).

The same applies to the @Property annotation (Section 8.14, line 1311).


Currently, the SCA Spring specification says nothing about constructor injection, but I have raised a number of issues against that specification to fix this and other problems.



Yours,  Mike.




Reply via email to