上回说到自己实现一个 Mini IoC 容器,有了一个依赖注入的容器,如果不尝试用于 Web 应用那岂不是没什么用。因此我们可以试着在 Mini IoC 的基础上,实现一个 Spring MVC Style 的简单 MVC 框架。
同样,先给出我们希望怎么使用这个的框架的代码,然后再一步步实现我们想要的写法:
用法
@Controller
public class UserController {
private static final Logger LOGGER = LoggerFactory.getLogger(UserController.class);
@Resource
private UserService userService;
@URL(value = {"/", "/index"}, method = {HttpMethod.GET, HttpMethod.POST})
public String list(Map<String, Object> map) {
map.put("userList", userService.listUsers());
return "list";
}
@URL("home")
public String home() {
return "forward:/";
}
@URL(value = "/add", method = HttpMethod.GET)
public String addPage() {
return "add";
}
@URL(value = "/add", method = HttpMethod.POST)
public String addUser(Map<String, String> map, @Param("name") String name) {
//String name = map.get("name"); // map 里有所有参数 或者从方法中标有 @Param 的参数获取
String email = map.get("email");
String note = map.get("note");
if (name == null || email == null) {
map.put("error", "用户名及电子邮件是必填项"); // map 还充当返回结果的 Model 的角色
return "add";
}
User user = new User().setName(name).setEmail(email).setNote(note);
userService.saveUser(user);
return "redirect:/";
}
// ...
}

