说我使用的是春天,我有以下策略......策略模式
接口
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);
}
}
Cont转...
@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,该策略可能是,如你所料。是否所有的bean都需要像上面那样的组件,或者我的注释是不正确的?
我最大的疑问是你可以在Spring MVC应用程序中使用这样的上下文吗?我使用@Scope(原型)时遇到的问题是,这意味着cookeryDao调用策略会返回一个空指针,因为Dao不会被注入。
我将如何使用弹簧实现上述模式并且线程安全?我正在尝试什么?
什么是你的问题?所有这一切对我有用 – morgano
我想知道是否线程安全有一个像我已经完成的上下文 – david99world
上述也不会工作,因为我已经做了'新'这是在春天的上下文之外? – david99world