Say Я использую весной, у меня есть следующие стратегии ...шаблона стратегии с пружинной фасолью
Интерфейс
public interface MealStrategy {
cook(Meat meat);
}
Первой стратегия
@Component
public class BurgerStrategy implements
MealStrategy {
@Autowired CookerDao cookeryDao;
@Override
public void cook(Meat meat) {
cookeryDao.getBurger(meat);
}
}
Следующая стратегия ...
@Component
public class SausageStrategy implements
MealStrategy {
@Autowired CookerDao cookeryDao;
@Override
public cook(Meat meat) {
return cookeryDao.getSausage(meat);
}
}
Конт доб ...
@Component
@Scope("prototype")
public class MealContext {
private MealStrategy mealStrategy;
public void setMealStrategy(MealStrategy strategy) {
this.strategy = strategy;
}
public void cookMeal(Meat meat) {
mealStrategy.cook;
}
}
Теперь говорят, этот контекст в настоящее время доступны через MVC контроллер, как ...
@Autowired
private MealContext mealContext;
@RequestMapping(method = RequestMethod.POST)
public @ResponseBody Something makeMeal(Meat meat) {
mealContext.setMealStrategy(new BurgerStrategy())
mealContext.cookMeal(meat);
}
Если контекст быть компонентом? Когда я это сделаю, я получаю сообщение об ошибке loadOnStartup, и есть nonUniqueBean, что стратегия может быть, как и следовало ожидать. Должны ли все бобы быть такими компонентами, как указано выше, или мои аннотации неверны?
Мой самый большой запрос: вы можете использовать такой контекст в приложении Spring MVC? Проблема, которую я испытываю при использовании @Scope (прототип), также означает, что вызовы cookeryDao в стратегиях возвращают нулевой указатель, поскольку Дао не вводятся.
Как бы реализовать описанную выше модель с использованием пружины, а также быть безопасной в потоковом режиме? Является ли то, что я пытаюсь даже сделать возможным?
В чем проблема? все это работает для меня – morgano
Я хочу знать, если это потокобезопасно, чтобы иметь такой контекст, как я сделал – david99world
, также это не сработало, потому что, поскольку я сделал «новый», это вне контекста Spring? – david99world