2011-11-05 5 views
0

J'ai récemment rejoint un projet qui utilise intensément Apache Camel. Je vois beaucoup de code qui ressemble à ceci:Apache Camel avec injection de constructeur

@Service 
public class MyClass 
{ 
    public MyClass() 
    { 
     myOtherClass= new MyOtherClass(); 
    } 


    ... 

    private MyOtherClass myOtherClass; 

} 

Cela me fait mal, parce que je déteste new un objet à l'intérieur du constructeur. Il est difficile de tester la classe en isolation. Je préférerais de beaucoup utiliser une forme d'injection de constructeur. En d'autres termes, j'aimerais pouvoir passer une référence à MyOtherClass dans le constructeur de MyClass. Est-ce possible? Gardez à l'esprit que nous utilisons Camel. C'est un service Camel, et je crois comprendre que Camel est responsable de donner la vie à MyClass.

Toutes les recommandations sont les bienvenues. Merci!

Répondre

1

Il n'y a pas d'annotation @Service dans Camel, donc c'est un autre framework qui le fait. Utilisez-vous Spring? Ensuite, vous pouvez utiliser les moyens de printemps de le faire.

+0

Oh! Oui tu as raison. Nous utilisons le printemps. Cette question est très trompeuse car elle confond le printemps et le chameau. Je vais essayer de le fermer. Merci de m'avoir indiqué la bonne direction. :) – Runcible