Sagen wir, ich bin mit Frühling, ich habe die folgenden Strategien ...Strategie Muster mit Frühlings Bohnen
Schnittstelle
public interface MealStrategy {
cook(Meat meat);
}
Erste Strategie
@Component
public class BurgerStrategy implements
MealStrategy {
@Autowired CookerDao cookeryDao;
@Override
public void cook(Meat meat) {
cookeryDao.getBurger(meat);
}
}
Nächste Strategie ...
@Component
public class SausageStrategy implements
MealStrategy {
@Autowired CookerDao cookeryDao;
@Override
public cook(Meat meat) {
return cookeryDao.getSausage(meat);
}
}
Cont ext ...
@Component
@Scope("prototype")
public class MealContext {
private MealStrategy mealStrategy;
public void setMealStrategy(MealStrategy strategy) {
this.strategy = strategy;
}
public void cookMeal(Meat meat) {
mealStrategy.cook;
}
}
Nun sagen dieser Zusammenhang durch einen Mvc-Controller zugegriffen wurde, wie ...
@Autowired
private MealContext mealContext;
@RequestMapping(method = RequestMethod.POST)
public @ResponseBody Something makeMeal(Meat meat) {
mealContext.setMealStrategy(new BurgerStrategy())
mealContext.cookMeal(meat);
}
Sollte der Kontext eine Komponente sein? Wenn ich das tue, bekomme ich einen Fehler, der loadOnStartup sagt und es gibt eine nonUniqueBean, die die Strategie sein könnte, wie Sie es erwarten würden. Müssen alle Beans Komponenten wie oben sein oder sind meine Anmerkungen falsch?
Meine größte Abfrage ist wirklich, können Sie einen Kontext wie diesen in einer Spring MVC App verwenden? Das Problem, das ich bei der Verwendung von @Scope (Prototyp) habe, ist auch, dass die cookeryDao-Aufrufe in den Strategien einen Nullzeiger zurückgeben, da die Daos nicht injiziert werden.
Wie würde ich das obige Muster mit Feder implementieren und auch threadsicher sein? Ist das, was ich versuche, sogar möglich?
Was ist genau dein Problem? all das funktioniert für mich – morgano
Ich möchte wissen, ob es Thread sicher ist, einen Kontext zu haben, wie ich – david99world
getan habe, auch das obige würde nicht funktionieren, weil, wie ich 'neue' gemacht habe, dies außerhalb des Frühlingszusammenhangs ist? – david99world