Ich bin relativ neu zu EE/CDI für DI so vielleicht könnte einer von Ihnen mir einige Tipps für mein Problem geben:DI mit CDI und 3rd Party Klasse: vermeiden Sie Konstruktor macht Geschäftslogik mehrere Male für jede Proxy-Konstruktion genannt
Ich habe eine 3rd-Party-Klasse, die ich in andere Bohnen injizieren möchte. Im Frühjahr braucht nur noch eine <bean>
Erklärung und es ist fertig. Mit cdi dauert es jetzt eine Fabrik Klasse:
public class XProducer {
@Produces
@ApplicationScoped
public X createX(){
return new X();
}
}
Unfortunatly X`s Konstruktor ruft ziemlich teuer Business-Logik und jedes Mal, wenn ein Proxy von cdi erstellt wird es genannt, aber ich kann nicht X Verhalten ändern. Dies lässt mich mit den folgenden Optionen, die ich nicht wirklich mag:
- Verpackung X in einigen hässlichen
Holder
-Klasse, - eine Fassade zu schaffen und haben Methoden delgate zu
X
Gibt es irgendwelche anderen Optionen übrig?
Okay, mit EJB dann :) Ich ursprünglich abgelehnt '@ Singleton' wegen Container verwaltet Nebenläufigkeit einen Engpass zu schaffen, der es übersehen hat kann mit '@ConcurrencyManagement (BEAN)' deaktiviert werden. –
Warum EJB? Wenn Sie '@ javax.inject.Singleton' verwenden, verwenden Sie JSR-330, nicht EJB. –