简单需求:
SpringMVC ModelAndView 需要从配置文件读取资源地址,不封装代码时,需要每个ModelAndView 都从配置文件中读取,造成代码重复。可以用回调函数进行封装:
定义一个接口,具体实现在具体业务中实现:
public interface IModelView {
ModelAndView view(ModelAndView mv);
}
封装一个组件:
@Component
public class ModelView {
@Value("${res.url}")//从配置文件中读取信息
private String resURL;
public ModelAndView getModelView(IModelView view) {
ModelAndView mv = new ModelAndView();
mv.addObject("resURL", resURL);
mv = view.view(mv);
return mv;
}
}
具体业务中调用:
@Autowired private ModelView view;
public ModelAndView wxpaySUCCESS() {
return view.getModelView(
new IModelView() {
@Override
public ModelAndView view(ModelAndView mv) {//实现接口
mv.setViewName("/paysuccess.html");
return mv;
}
});
}
无需在每个业务中重复获取资源信息:
mv.addObject("resURL", resURL);
同样的可以封装更多逻辑。