Je travaille sur une application basée sur Spring qui enregistre une champ d'application personnalisé "tâche . L'idée est que lorsqu'une nouvelle tâche est lancée, Spring devrait fournir axé sur les tâches objets.
La tâche est instanciée dans le runtime. Elle reçoit une certaine configuration sous la forme d'un objet Properties
objet. Je veux enregistrer cet objet avec le ApplicationContext
mais à l'intérieur de la portée de la tâche afin que tous les beans de cette portée puissent faire référence à la configuration de cette tâche particulière.
Voici l'idée générale en code :
public class MyTask extends SourceTask {
@Override
public void start(Map<String, String> props) {
context = ContextProvider.getApplicationContext();
// Initialize the scope
ConnectorTaskScope scope = context.getBean(ConnectorTaskScope.class);
scope.startNewTask();
// TODO register the props object in the context
// get an object which requires the properties and work with it
context.getBean(SomeScopedBean.class);
}
}
Je n'arrive pas à comprendre comment je peux enregistrer un haricot dans la base de données de l'UE. ApplicationContext
dont la portée est appropriée.
Merci.
Mise à jour :
Voici un peu plus de code pour expliquer un peu mieux la question. SomeScopedBean
devrait faire quelque chose avec la configuration qui lui a été fournie et ressemble à quelque chose comme ceci :
public class SomeScopedBean {
@Autowire
public SomeScopedBean (Properties configuration) {
// do some work with the configuration
}
}
L'idée de l'application est qu'elle devrait avoir plusieurs instances de MyTask
fonctionnent avec des configurations différentes et chaque tâche a sa propre portée. Dans le cadre de chaque tâche, il devrait y avoir 1 instance de SomeScopedBean
initialisé avec la configuration de la tâche.
public class MyApplication {
public static void main (String[] args) {
// ...
Properties config1 = loadConfiguration1();
Properties config2 = loadConfiguration2();
MyTask task1 = new MyTask();
MyTask task2 = new MyTask();
task1.start(config1);
task2.start(config2);
// ...
}
}