我见过很多Spring MVC表单标签的例子,每一个都使用这样的代码:
class Student {
private String firstName;
private String lastName;
// necessary getters and setters (ommited here)
}
现在在StudentController
中,他们将Student对象创建为:
@Controller
class StudentController {
@RequestMapping("/showForm")
public String showForm(Model model) {
model.addAttribute("student", new Student());
return "show-form";
}
}
我的问题是,我们可以制作学生的范围原型并使其成为StudentController的依赖项并使其自动装配,让Spring将它注入StudentController,如下所示:
@Controller
class StudentController {
@Autowired
Student student;
@RequestMapping("/showForm")
public String showForm(Model model) {
model.addAttribute("student", student));
return "show-form";
}
}
这是我正在制作的有效点吗?如果没有,请解释。
答案 0 :(得分:0)
该模型的唯一目的是将数据从视图传递到spring中的相应处理程序。模型是POJO,它是普通的旧对象,这意味着它只有getter和setter。在你的情况下假设你要做的是什么正在注入自动装配的依赖项。
1.如果模型是单例范围的。在应用程序启动期间创建对象.i意味着为什么要在应用程序启动期间创建一个没有用处的对象,其唯一目的是用作耦合数据的层。
2.如果模型是原型范围
@Component
@Scope("prototype")
public class Student {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
为什么要写一个不必要的代码,而你可以用一个班轮
model.addAttribute("student", new Student());
希望这有帮助。