Dire che sto utilizzando la primavera, ho le seguenti strategie ...modello di strategia con i fagioli di primavera
interfaccia
public interface MealStrategy {
cook(Meat meat);
}
prima strategia
@Component
public class BurgerStrategy implements
MealStrategy {
@Autowired CookerDao cookeryDao;
@Override
public void cook(Meat meat) {
cookeryDao.getBurger(meat);
}
}
strategia successiva ...
@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;
}
}
Ora dicono che questo contesto è stato a cui si accede attraverso un controller MVC, come ...
@Autowired
private MealContext mealContext;
@RequestMapping(method = RequestMethod.POST)
public @ResponseBody Something makeMeal(Meat meat) {
mealContext.setMealStrategy(new BurgerStrategy())
mealContext.cookMeal(meat);
}
caso in cui il contesto essere un componente? Quando ottengo un errore che dice loadOnStartup c'è un nonUniqueBean che la strategia potrebbe essere, come ci si aspetterebbe. Tutti i bean devono essere componenti come sopra o le mie annotazioni sono errate?
La mia più grande domanda è in realtà è possibile utilizzare un contesto come quello in un'app di Spring MVC? Il problema che ho con l'uso di @Scope (prototipo) è che le chiamate di cookery nelle strategie restituiscono un puntatore nullo poiché i Dao non vengono iniettati.
Come implementare il motivo sopra riportato utilizzando la molla e anche il thread-safe? E 'quello che sto provando anche possibile?
Qual è esattamente il tuo problema? tutto questo funziona per me – morgano
Voglio sapere se è thread-safe avere un contesto come quello che ho fatto – david99world
anche quello sopra non funzionerebbe perché come ho fatto 'nuovo' questo è al di fuori del contesto di primavera? – david99world