В стойках 2 и на пружинной основе, пожалуйста, рассмотрите ниже образец.Резьбовые столы с веб-приложением с пружиной
BookManager
имеет действие, которое возвращает клиенту Map
книг. Он получить карту от службы слоя, который injected
к весне
public class BookManager extends ActionSupport {
//with setter and getter
private Map<String, BookVO> books;
@inject
BookService bookservice
@Action("book-form")
public String form(){
setBooks(bookservice.getAllBooks());
}
}
Уровень обслуживания получает список книг из БД ап возвращает MAP.
@Named
public class BookService(){
private Map<String,BookVO> books;
public Map<String,BookVO> getAllBooks(){
books = new HashMap<String,BookVO>();
//fill books from DB
return books;
}
}
Я проверил и обнаружил, что выше реализация не Потокобезопасная.
- я могу сделать код поточно путем удаления частного поля
books
изBookService
и использовать его как методHashMap<String,BookVO>() books = new HashMap<String,BookVO>();
. Почему это изменение делает поток кода безопасным? - Действие стойки является потокобезопасным, это не должно зависеть от того, что безопасная пружинная система без резьбы работает в потоковом режиме.
- Если я использую безошибочную безопасную версию сервиса в своем действии, создав объект службы
new
вместо использования весеннего впрыска, я не стану проблемой. Зачем? Если служба не является потокобезопасной, почему создание нового экземпляра и вызов его будет потокобезопасным!
Это не будет, если действие не является потокобезопасным. –