package common.web.controller.advice;

import javax.annotation.Resource;

import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.ModelAttribute;

import common.service.utils.AbstractHelperClass;
import common.web.service.SystemIntegrator;

@ControllerAdvice //(basePackages = "com.github") //basePackages用于指定对哪些包里的Controller起作用。
public class IntegrationControllerAdvice extends AbstractHelperClass {

	@Resource
	private SystemIntegrator systemIntegrator;
	
	//用于自动绑定前台请求参数到Model中。
    @InitBinder  
    public void initBinder(WebDataBinder binder) {  
    	
    	//// 此处仅演示忽略request中的参数id
    	//binder.setDisallowedFields("id");
    	//用到的场景非常少,目前没有测试过
    	//System.out.println("============应用到所有@RequestMapping注解方法，在其执行之前初始化数据绑定器"); 
    }
    
    /**
     * 利用ModelAtribute的特性完成SystemIntegration whenRequest的动作，这样性能比较高
     * 原因是利用RequestListener时出现了4次调用，影响性能,可能是使用了模板后的后遗症
     */
  	@ModelAttribute  
    public void onRequest() {  
  		systemIntegrator.onServletRequest();

    }
    
}


@@ -63,24 +63,87 @@
 .Resource;%0A%0A
+import org.springframework.beans.factory.annotation.Autowired;%0A
 import org.s
@@ -173,32 +173,32 @@
 .WebDataBinder;%0A
-
 import org.sprin
@@ -629,17 +629,92 @@
 %7B%0A%0A%09
-@Resource
+//20170817 %E5%8A%A0%E5%85%A5required=false ,%E5%BD%93SystemIntegrator%E6%B2%A1%E6%9C%89%E6%B3%A8%E5%86%8C%E6%97%B6%E4%B8%8D%E4%BC%9A%E6%8A%A5%E9%94%99%0A%09@Autowired(required=false) 
 %0A%09pr
@@ -1243,16 +1243,50 @@
 %7B  %0A  %09%09
+if (systemIntegrator!=null)%7B%0A  %09%09%09
 systemIn
@@ -1313,16 +1313,27 @@
 quest();
+%0A  %09%09%7D%0A  %09%09
 %0A%0A    %7D%0A

add @Autowired(required=false) ,importantgit add .git add .