spring:了解@SessionAttributes与@Scope('session')之间的区别
问题内容:
情况1:
@Scope(‘Session’)
public class Employee{
//..
}
@Controller
public class EmployeeController {
@Autowired
private Employee employee;
//..
}
}
情况2:
@Controller
@SessionAttributes("employee")
public class EmployeeController {
@ModelAttribute
public void addEmployee(){
//..
}
}
案例1和案例2是否相同?
问题答案:
两种方法都创建一个会话属性。
使用@Scope(‘Session’)
spring
时,将确定名称,并且bean不会自动填充任何控制器的模型。它是可以自动装配的普通bean。但是,如果要在单例bean中自动装配当前值(当前会话中的当前值),则必须使用scope-
proxy。
使用时,@SessionAttributes(‘employee’)
您声明模型属性employee
将存在于会话中。如果控制器的任何方法需要在提交后初始化属性,则spring将在会话中查找该属性的版本。但是它不能自动连接到另一个bean中。
因此,尽管这两种方法显然给出了相同的结果:employee
在会话中,它们对应于不同的用例。