У меня есть простой POJO UserQuota
с 1 поле quota
в нем:почему мой весенний сеанс включен в список сеансов?
@Component
@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)
public interface UserQuota {
public int getQuota();
public void setQuota(int quota);
}
сейчас, я использовал два разных окна браузера (Firefox и хром), чтобы войти в мой веб-приложение в виде двух разных пользователей. к моему удивлению, когда я устанавливаю значение квоты (с setQuota
) с одного сеанса, новое значение становится доступным для другого сеанса (когда вызывается getQuota
). Я ожидал, что каждый пользовательский сеанс будет иметь свой собственный экземпляр компонента; Разве это не то, что для весенней фасоли для сеанса?
У меня должно быть что-то отсутствует. что это может быть?
редактировать:
класс реализации выглядит следующим образом:
@Component
public class UserQuotaImpl implements UserQuota {
private int quota;
/**
* @return the quota
*/
public int getQuota() {
return quota;
}
/**
* @param quota the quota to set
*/
public void setQuota(int quota) {
this.quota = quota;
}
}
и, наконец, вот как я использовать сессионный компонент:
@Component
public class UserQuotaHandler {
@Autowired
private UserQuota userQuota;
public void checkAndUpdateQuota() {
int quota = userQuota.getQuota();
// i use my business logic to decide whether the quota needs an update
if(myBusinessLogic) {
userQuota.setQuota(someNewValue);
}
}
}
я использую context:component-scan
в моей XML-конфигурации файл. можно отметить, что большинство моих других фасоли, которые были автомоделированы, представляют собой одноэлементные бобы, которые, похоже, работают как ожидалось
Пожалуйста, покажите, как вы вводите и используете боб. – Savior
Я обновил свой вопрос по запросу – Tanvir
Где класс реализации? Вам нужно будет аннотировать это с помощью '@ Scope', а не интерфейса, afaik. – Savior