1. @Component
@Component(role = MyComponent.class, instantiationStrategy = "per-lookup")
public class MyComponentImpl implements MyComponent {
// Component implementation code
}
2. @Requirement
@Component(role = MyComponent.class, instantiationStrategy = "singleton")
public class MyComponentImpl implements MyComponent {
@Requirement
private AnotherComponent anotherComponent;
// Component implementation code
}
1. components.xml
<component>
<role>MyComponent</role>
<role-hint>default</role-hint>
<implementation>com.example.MyComponentImpl</implementation>
</component>
<component>
<role>AnotherComponent</role>
<implementation>com.example.AnotherComponentImpl</implementation>
</component>
2. plexus.xml
<component-repository>
<components>
<component>components.xml</component>
</components>
</component-repository>
MyComponent.java
public interface MyComponent {
void doSomething();
}
MyComponentImpl.java
@Component(role = MyComponent.class, instantiationStrategy = "per-lookup")
public class MyComponentImpl implements MyComponent {
@Requirement
private AnotherComponent anotherComponent;
public void doSomething() {
// Component implementation code
anotherComponent.doSomethingElse();
}
}
AnotherComponent.java
public interface AnotherComponent {
void doSomethingElse();
}
AnotherComponentImpl.java
@Component(role = AnotherComponent.class, instantiationStrategy = "singleton")
public class AnotherComponentImpl implements AnotherComponent {
public void doSomethingElse() {
// Component implementation code
}
}
components.xml
<component>
<role>MyComponent</role>
<role-hint>default</role-hint>
<implementation>com.example.MyComponentImpl</implementation>
</component>
<component>
<role>AnotherComponent</role>
<implementation>com.example.AnotherComponentImpl</implementation>
</component>
plexus.xml
<component-repository>
<components>
<component>components.xml</component>
</components>
</component-repository>