Весной, когда в области видимости компонента "запрос" для запроса EACH будет создан новый объект. Я хочу проверить это, но для каждого запроса я получаю то же значение хэш-кода.
Question-
1. Should'nt the hash code value should be different since new object is generated.
Output for 4 http requests using Chrome and IE browser
emp hashcode == 172261326
emp hashcode == 172261326
emp hashcode == 172261326
emp hashcode == 172261326
@Controller
@RequestMapping("/welcome")
public class HelloController {
@Autowired
private Employee emp;
public Employee getEmp() {
return emp;
}
public void setEmp(Employee emp) {
this.emp = emp;
}
@RequestMapping(method = RequestMethod.GET)
public String printWelcome(ModelMap model) {
System.out.println("emp hashcode == " + emp.hashCode());
emp.
model.addAttribute("message", "Spring 3 MVC Hello World");
return "hello";
}
@Component
@Scope(value="request")
public class Employee {
private String fname;
private int age;
public String getFname() {
return fname;
}
public void setFname(String fname) {
this.fname = fname;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
В зависимости от выбранного режима прокси, Spring предоставит перехватчик для метода hashCode
. Обычно это делегирование вызова вызываемому объекту. Вы думаете, что в этом случае рекомендуемым объектом будет фактический объект Employee
, но вы ошибаетесь. На самом деле Spring предоставляет источник SimpleBeanTargetSource
который знает, как получить свой бобовый SimpleBeanTargetSource
.
Там только один объект SimpleBeanTargetSource
, поэтому вы всегда получаете тот же hashCode
.
@Scope
называемый proxyMode
. По умолчанию используется ScopedProxyMode.DEFAULT
. При request
bean-объектов bean вы, вероятно, должны установить для него значение TARGET_CLASS
(CGLIB) или INTERFACES
если ваш тип реализовывал интерфейс (прокси-серверы JDK).