2010-06-16 11 views
0

Avez-vous votre propre petite infrastructure pour les démarrages de projets? Je veux dire, à chaque fois qu'on doit faire les mêmes choses au début:Méthode préférée d'initialisation de l'application


initialisation du contexte - idéalement après arguments sont traités. Parfois sans saisie interactive de l'utilisateur, parfois avec lecteur d'entrée. Parfois, nous devons charger des propriétés, parfois non. Ensuite, nous devons extraire une classe hors contexte et exécuter sa méthode. Programmation .... programmation jusqu'à l'écriture du script shell pour tout placer sur classpath.


Il est vrai qu'il diffère en fonction des besoins réels. Mais il me semble que je fais presque toujours la même chose, encore et encore à partir de zéro. Parfois je réalise que je reporte mon travail juste parce que je ne veux pas faire ces startups agaçantes.


Ce serait génial s'il y avait une sorte de classe principale universelle faisant réflexion pour le haricot spécifié, l'initialisation du contexte, l'analyse de l'argument, la lecture entrée utilisateur interactive et ont le programmeur faire les choses importantes ... Tout programme d'installation peut être fait par la configuration de ressort. Je pense que je vais devoir le faire par moi-même.

Je vous remercie de vos idées

EDIT: Ce que je vais faire: Une sorte de classe de démarrage qui obtenir les arguments de l'utilisateur et développeur (chemin au printemps fichier de contexte, le haricot à installer avec des arguments de l'utilisateur et le haricot à instancier, fournir avec le contexte de printemps et courir). Une API légère pour l'analyse des arguments, peut-être quelque chose pour l'entrée interactive de l'utilisateur qui peut être difficile

Répondre

2

J'utilise une classe de base abstraite à partir de laquelle tous mes utilitaires de ligne de commande sont lancés. Le processus d'initialisation a défini certaines méthodes de base de cycle de vie de démarrage. Je ne pas utiliser des arguments de ligne de commande

sous-classes en béton ressemblent à:

public class MyApp extends MyAppBase { 
public String[] getSpringConfigResource() { 
    return new String[] { "someapp/appctx.xml", "util/appctx2.xml" }; 
} 

protected void postApplicationLoad() { 
    SomeServer server = springCtx.getBean("server"); 
    server.start(); 
} 

public static void main(String args[]) { 
    initLogging("com/me/myAppLog4j.xml", MyApp.class);  
    MyApp myApp = new MyApp(); 
    myApp.loadConsoleApplication(); 
} 
} 

Pour une raison aucune de mon swing sur la base des applications non interactives utilisent des arguments de ligne de commande (args[]), puisque ceux-ci ont tendance à être des services avec les installateurs et les fichiers de propriétés.

+0

C'est un très bon design pour ce que je voulais dire .. ce modèle de modèle de méthode. Merci d'avoir partagé – lisak