Nói rằng tôi đang sử dụng lò xo, tôi có các chiến lược sau ...mô hình chiến lược với đậu mùa xuân
Interface
public interface MealStrategy {
cook(Meat meat);
}
chiến lược đầu tiên
@Component
public class BurgerStrategy implements
MealStrategy {
@Autowired CookerDao cookeryDao;
@Override
public void cook(Meat meat) {
cookeryDao.getBurger(meat);
}
}
chiến lược Tiếp ...
@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;
}
}
Bây giờ nói bối cảnh này đã được truy cập thông qua một bộ điều khiển MVC, giống như ...
@Autowired
private MealContext mealContext;
@RequestMapping(method = RequestMethod.POST)
public @ResponseBody Something makeMeal(Meat meat) {
mealContext.setMealStrategy(new BurgerStrategy())
mealContext.cookMeal(meat);
}
bối cảnh có nên là một thành phần? Khi tôi nhận được một lỗi nói loadOnStartup có một nonUniqueBean rằng chiến lược có thể được, như bạn mong đợi. Tất cả các hạt cà phê có cần phải là các thành phần như trên hoặc là chú thích của tôi không chính xác?
Truy vấn lớn nhất của tôi thực sự là bạn có thể sử dụng ngữ cảnh như vậy trong ứng dụng Spring MVC không? Vấn đề tôi có với việc sử dụng @Scope (nguyên mẫu) quá là nó có nghĩa là cookeryDao cuộc gọi trong các chiến lược trả về một con trỏ null như của Dao không nhận được tiêm.
Tôi làm cách nào để triển khai mẫu trên bằng cách sử dụng lò xo và cũng là sợi chỉ an toàn? Là những gì tôi đang cố gắng thậm chí có thể?
Vấn đề chính xác của bạn là gì? tất cả điều này làm việc cho tôi – morgano
Tôi muốn biết nếu đó là thread an toàn để có một bối cảnh như tôi đã làm – david99world
cũng ở trên sẽ không làm việc vì như tôi đã thực hiện 'mới' này là bên ngoài bối cảnh mùa xuân? – david99world