J'ai été chargé de faire un travail de refactoring sur la façon dont nous démarrons les applications. Fondamentalement, nous avons un tas d'applications console qui dépendaient du code de démarrage de l'application GUI, provoquant de fausses dépendances qui ont des effets de démarrage pour quelles bibliothèques nous devons expédier, et quelles dépendances les autres modules doivent déclarer. J'ai donc écrit un cadre de démarrage simple où je jette simplement un tas d'objets Runnable dans une liste, puis les exécuter dans l'ordre - et cela fonctionne.Contrôle de l'ordre de démarrage de PicoContainer
Mais je pensais - nous avons déjà PicoContainer dans notre projet, de sorte que toutes ces choses qui ont besoin d'être exécuté au démarrage pourrait éventuellement être jeté dans une PicoContainer, et si elles mettent en œuvre amorçable ils vont commencer ...
Mais dans certains cas, nous voulons spécifier l'ordre entre eux. Par exemple, je ne souhaite pas que d'autres composants écrivent dans le journal avant d'écrire un en-tête dans le journal indiquant que l'application démarre. Je sais que je peux introduire des commandes en introduisant des dépendances d'injection, mais cela ressemble à un hack dans ce cas - je devrais ajouter l'éditeur d'en-tête de journal en tant que dépendance pour tous les autres composants qui pourraient écrire dans le journal. tout.
Néanmoins, il semblerait que ce serait bien de contrôler l'ordre de démarrage de PicoContainer, alors y a-t-il peut-être un autre moyen? Alternativement, je pourrais simplement rester simple et coller à ma liste de Runnable
Cela fonctionne après tout.
En fait, le composant qui écrit l'en-tête de démarrage dans l'enregistreur est un composant distinct de l'enregistreur lui-même (principe de la responsabilité unique, et tout cela). – Trejkaz