It's just the fact that it is public, writable, uses an interface and is defined in your implementation class.
Autowiring was in deed introduced in beta-2. Take a look here for
further information:
http://jakarta.apache.org/hivemind/hivemind/BuilderFactory.html
Achim Huegen
Teshler, Andre wrote:
Thank you for the fast answer.
>>The definition of TestComponent2 doesn't specify a value for property >>component2. >>So autowiring is tried and searches for a unique service >>that implements the TestComponent interface in order to assign it to >>property component2. Since two services with this interface exist an >>error is raised.
I think it's very natural to have private properties which are not not hivemind initialized. Why should I initialize something I do not want to be initialized ?
>>>>Autowiring can be switched off: >>>> <construct autowire-services="false" class="framework..."> >>>> </construct>
Great !
Probably I misunderstand something, but the feature looks unflexible: once I have made an implementation property of some service interface "visible" to hivemind using <set-service>, I allways need to inject it
even when using this service interface for different Service and even with the different implementation class.
Is the Autowiring new added at beta-2 ?
Thanks Andre
-----Urspr�ngliche Nachricht-----
Von: Achim Huegen [mailto:[EMAIL PROTECTED] Gesendet: Donnerstag, 19. August 2004 14:54
An: [email protected]
Betreff: Re: Problem with "multiple service points for interface"
The definition of TestComponent2 doesn't specify a value for property component2. So autowiring is tried and searches for a unique service that implements the TestComponent interface in order to assign it to property component2. Since two services with this interface exist an error is raised.
You can fix this by specifying a value for component2, but I dont't know how
you can leave it null.
Achim Huegen
Teshler, Andre wrote:
I am working with beta-2 and use following configuration for my service:
<service-point id="TestComponent*1*"
interface="framework.transaction.TestComponent">
<invoke-factory service-id="hivemind.BuilderFactory">
<construct class="framework.transaction.TestComponentImpl">
<set-service property="*component2*" service-id="TestComponent*2*"/>
</construct>
</invoke-factory>
</service-point>
<service-point id="TestComponent*2*" interface="framework.transaction.TestComponent"> <invoke-factory service-id="hivemind.BuilderFactory"> <construct class="framework.transaction.TestComponentImpl"> </construct> </invoke-factory> </service-point>
With implementation class:
public class TestComponentImpl implements TestComponent { private TestComponent *component2*; public void setComponent2(TestComponent component2) {
this.component2 = component2;
}
// ...
}
TestComponent1 will be initialized correctly, but acessing the property
'component2' I get following exception:
/Unable to autowire property component2 of service
framework.transaction.TestComponent2: There are multiple service points for interface framework.transaction.TestComponent: {framework.transaction.TestComponent, framework.transaction.TestComponent2}./
What is wrong here ? It should be possible to define two services with
the same interface (and same implementation class) but different injektions for member-services.
By the way: this example has worked withe beta-1.
Thanks.
Andre
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
