Say Używam sprężynę, mam następujące strategie ...Strategia wzór z ziaren wiosennych
Interfejs
public interface MealStrategy {
cook(Meat meat);
}
Pierwsza strategia
@Component
public class BurgerStrategy implements
MealStrategy {
@Autowired CookerDao cookeryDao;
@Override
public void cook(Meat meat) {
cookeryDao.getBurger(meat);
}
}
Następny strategia ...
@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;
}
}
teraz powiedzieć to kontekst był dostępny za pośrednictwem kontrolera mvc, jak ...
@Autowired
private MealContext mealContext;
@RequestMapping(method = RequestMethod.POST)
public @ResponseBody Something makeMeal(Meat meat) {
mealContext.setMealStrategy(new BurgerStrategy())
mealContext.cookMeal(meat);
}
Jeżeli kontekst być składnikiem? Kiedy to robię, pojawia się błąd informujący, że loadOnStartup istnieje, że istnieje strategia UNIqueBean, że strategia może być, jak można się spodziewać. Czy wszystkie fasole muszą być składnikami jak wyżej lub czy moje adnotacje są nieprawidłowe?
Moje największe pytanie brzmi: czy możesz użyć takiego kontekstu w aplikacji Spring MVC? Problem z używaniem @Scope (prototypu) też oznacza, że wywołania cookeryDao w strategii zwracają zerowy wskaźnik, ponieważ Dao nie są wstrzykiwane.
W jaki sposób zaimplementować powyższy wzór za pomocą sprężyny, a także być bezpieczny dla wątków? Czy to, co próbuję, jest możliwe?
Co to jest dokładnie twój problem? wszystko to działa dla mnie – morgano
Chcę wiedzieć, czy to bezpieczne dla wątku mieć kontekst, jak zrobiłem – david99world
również powyższe nie będzie działać, ponieważ jak zrobiłem "nowe" jest poza kontekstem Spring? – david99world