<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>裤衩小站</title>
  
  <subtitle>学会整理自己的经验是大牛的第一步</subtitle>
  <link href="/atom.xml" rel="self"/>
  
  <link href="https://weixianginay.github.io/"/>
  <updated>2018-06-22T08:01:28.238Z</updated>
  <id>https://weixianginay.github.io/</id>
  
  <author>
    <name>weixiang</name>
    
  </author>
  
  <generator uri="http://hexo.io/">Hexo</generator>
  
  <entry>
    <title>工作中遇到的BUG和解决方案</title>
    <link href="https://weixianginay.github.io/2018/01/31/%E5%B7%A5%E4%BD%9C%E4%B8%AD%E9%81%87%E5%88%B0%E7%9A%84BUG%E5%92%8C%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/"/>
    <id>https://weixianginay.github.io/2018/01/31/工作中遇到的BUG和解决方案/</id>
    <published>2018-01-31T02:40:27.000Z</published>
    <updated>2018-06-22T08:01:28.238Z</updated>
    
    <content type="html"><![CDATA[<h1 id="记录一下自己遇到的各种有趣的BUG"><a href="#记录一下自己遇到的各种有趣的BUG" class="headerlink" title="记录一下自己遇到的各种有趣的BUG."></a>记录一下自己遇到的各种有趣的BUG.</h1><a id="more"></a><h2 id="idea部署项目，404"><a href="#idea部署项目，404" class="headerlink" title="idea部署项目，404"></a>idea部署项目，404</h2><p>date: 2018-06-22<br>IDEA在拉取svn项目部署后，可以成功运行，debug模式下，可以进入controller。但在跳转页面的时候，报错404。<br>解决：在 “Edit Configurations” 里面找到 “working directory” 选择 “$MODULE_DIR$” 即可。</p><h2 id="ORA-01400-cannot-insert-NULL-into-”TEST-”-”T-ORDER-”-”FEE-TYPE-”"><a href="#ORA-01400-cannot-insert-NULL-into-”TEST-”-”T-ORDER-”-”FEE-TYPE-”" class="headerlink" title="ORA-01400: cannot insert NULL into (\”TEST\”.\”T_ORDER\”.\”FEE_TYPE\”)"></a>ORA-01400: cannot insert NULL into (\”TEST\”.\”T_ORDER\”.\”FEE_TYPE\”)</h2><p>date: 2018-01-31<br>本地开发环境，项目A　HTTP调用项目B，项目B可以插入数据库并返回项目B结果。把项目的上线文档整理后，让运维发布到测试环境，数据报错，Cause: java.sql.SQLException: ORA-01400: cannot insert NULL into。一直纠结在是不是打包问题，oracle版本问题，始终无法解决。<br>解决：查看上线文档中的sql，比对本地表结构，发现sql不一致！给的我建表sql有问题，修改后解决。</p><h2 id="利用CMPP协议发送短信，长短信乱码，发送失败。"><a href="#利用CMPP协议发送短信，长短信乱码，发送失败。" class="headerlink" title="利用CMPP协议发送短信，长短信乱码，发送失败。"></a>利用CMPP协议发送短信，长短信乱码，发送失败。</h2><p>date: 2018-01-24<br>短信运营商提供两种HTTP和CMPP发送短信方式，HTTP比较常见，简单。CMPP是中移动的协议方案，通过socket链接发送数据，我的demo是分别启动两个线程，一个发送线程，一个接受线程，高并发下（测试群发50人，人均10条不同内容，在1s内执行完毕，后续短信均符合要求）完美运行。可是！非常奇怪的是，当发送长短信时，调用失败，对方技术告诉我是，乱码问题。<br>解决：demo中提交短信内容，Msg_Fmt设置的(byte) 0x15改成 (byte) 0x08，并且content.getBytes(“UTF-16BE”)。<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line">CMPP协议中，Msg_Fmt规定只能为以下值。</span><br><span class="line">0：ASCII串</span><br><span class="line">3：短信写卡操作</span><br><span class="line">4：二进制信息</span><br><span class="line">8：UCS2编码</span><br><span class="line">15：含GB汉字</span><br><span class="line">CMPP协议严格规定了通信参数长度及格式，我建议在demo的基础上微调，新手不要造轮子。</span><br></pre></td></tr></table></figure></p><h2 id="Oracle查询分页有重复数据"><a href="#Oracle查询分页有重复数据" class="headerlink" title="Oracle查询分页有重复数据"></a>Oracle查询分页有重复数据</h2><p>date: 2017-11-26<br>Oracle sql查询分页时，如果排序字段相同数据大于页数，第二页就会有重复现象<br>解决：sql中，加入主键排序，可以避免此问题（因为主键不会有大量重复的情况，也可以选择一个相对唯一的字段排序）</p><h2 id="获取完整SQL语句"><a href="#获取完整SQL语句" class="headerlink" title="获取完整SQL语句"></a>获取完整SQL语句</h2><p>date: 2017-11-08<br>维护两个项目，用的orm一个是hibernate1，一个是ibatis，控制台都不能完整sql，不方便单独运行sql。<br>解决：从网址找的资料，发现p6spy.jar可以处理，从maven官网下载合适的jar包，和配置文件，项目的oracle.jdbc.driver.OracleDriver更换成p6spy的。源jar包的方法，会把所有的sql全部输出，控制台大量重复sql。可以更改jar包源码，去除重复sql输出。<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line">package com.p6spy.engine.logging.appender;</span><br><span class="line"></span><br><span class="line">public abstract class FormattedLogger &#123;</span><br><span class="line">    protected String lastEntry;</span><br><span class="line">    private String cache = &quot;&quot;;</span><br><span class="line"></span><br><span class="line">    public FormattedLogger() &#123;&#125;</span><br><span class="line"></span><br><span class="line">    public void logSQL(int connectionId, String now, long elapsed, String category, String prepared, String sql) &#123;</span><br><span class="line">        if(&quot;resultset&quot;.equals(category) &amp;&amp; !this.cache.equals(prepared)) &#123;</span><br><span class="line">            String logEntry = &quot;\n&quot; + prepared;</span><br><span class="line">            this.cache = prepared;</span><br><span class="line">            System.err.println(&quot;----sql----&quot;);</span><br><span class="line">            this.logText(logEntry);</span><br><span class="line">        &#125;</span><br><span class="line">    &#125;</span><br><span class="line">    public abstract void logText(String var1);</span><br><span class="line"></span><br><span class="line">    public void setLastEntry(String inVar) &#123;this.lastEntry = inVar;&#125;</span><br><span class="line"></span><br><span class="line">    public String getLastEntry() &#123;return this.lastEntry;&#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure></p>]]></content>
    
    <summary type="html">
    
      &lt;h1 id=&quot;记录一下自己遇到的各种有趣的BUG&quot;&gt;&lt;a href=&quot;#记录一下自己遇到的各种有趣的BUG&quot; class=&quot;headerlink&quot; title=&quot;记录一下自己遇到的各种有趣的BUG.&quot;&gt;&lt;/a&gt;记录一下自己遇到的各种有趣的BUG.&lt;/h1&gt;
    
    </summary>
    
    
      <category term="BUG" scheme="https://weixianginay.github.io/tags/BUG/"/>
    
  </entry>
  
  <entry>
    <title>SpringMVC Date Bad request 解决办法</title>
    <link href="https://weixianginay.github.io/2016/12/05/SpringMVC-Date-Bad-request-%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95/"/>
    <id>https://weixianginay.github.io/2016/12/05/SpringMVC-Date-Bad-request-解决办法/</id>
    <published>2016-12-05T01:44:08.000Z</published>
    <updated>2016-12-06T09:19:44.471Z</updated>
    
    <content type="html"><![CDATA[<p>这段时间，在写一个简单的StringMVC中Controller 遇到一个这样的问题。<br>Controller类参数对象中，有一个属性是Date格式的，前台传值时，总是报HTTP 400 的错。<br><a id="more"></a><br>最后的解决思路是在spring-mvc.xml 中加入配置<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br></pre></td><td class="code"><pre><span class="line">&lt;mvc:annotation-driven conversion-service=&quot;conversionService&quot;/&gt;  </span><br><span class="line">    &lt;bean id=&quot;conversionService&quot; class=&quot;org.springframework.format.support.FormattingConversionServiceFactoryBean&quot;&gt;  </span><br><span class="line">        &lt;property name=&quot;converters&quot;&gt;  </span><br><span class="line">            &lt;set&gt;  </span><br><span class="line">                &lt;bean class=&quot;org.springframework.core.convert.support.StringToBooleanConverter&quot;&gt;&lt;/bean&gt;  </span><br><span class="line">                &lt;bean class=&quot;com.*.*.converters.StringToEnumConverterFactory&quot; /&gt;  </span><br><span class="line">            &lt;/set&gt;  </span><br><span class="line">        &lt;/property&gt;  </span><br><span class="line">        &lt;property name=&quot;formatters&quot;&gt;  </span><br><span class="line">            &lt;set&gt;  </span><br><span class="line">                &lt;bean class=&quot;com.*.*.converters.DateFormatter&quot;&gt;&lt;/bean&gt;  </span><br><span class="line">            &lt;/set&gt;  </span><br><span class="line">        &lt;/property&gt;  </span><br><span class="line">    &lt;/bean&gt;</span><br></pre></td></tr></table></figure></p> <figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br></pre></td><td class="code"><pre><span class="line"> public class DateFormatter implements Formatter&lt;Date&gt; &#123;  </span><br><span class="line">    public String print(Date object, Locale locale) &#123;  </span><br><span class="line">        return null;  </span><br><span class="line">    &#125;  </span><br><span class="line">    public Date parse(String text, Locale locale) throws ParseException &#123;  </span><br><span class="line">        SimpleDateFormat format = new SimpleDateFormat(&quot;yyyy-MM-dd HH:mm:ss&quot;);  </span><br><span class="line">        Date date = null;  </span><br><span class="line">        try &#123;  </span><br><span class="line">            date = format.parse(text);  </span><br><span class="line">        &#125; catch (Exception e) &#123;  </span><br><span class="line">            format = new SimpleDateFormat(&quot;yyyy-MM-dd&quot;);  </span><br><span class="line">            date = format.parse(text);  </span><br><span class="line">        &#125;  </span><br><span class="line">        return date;  </span><br><span class="line">    &#125;  </span><br><span class="line">  </span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>问题解决。<br>可以再加入一个 枚举转换<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line">final class StringToEnumConverterFactory implements ConverterFactory&lt;String, Enum&gt; &#123;  </span><br><span class="line">    public &lt;T extends Enum&gt; Converter&lt;String, T&gt; getConverter(Class&lt;T&gt; targetType) &#123;  </span><br><span class="line">        return new StringToEnum(targetType);  </span><br><span class="line">    &#125;  </span><br><span class="line">    private class StringToEnum&lt;T extends Enum&gt; implements Converter&lt;String, T&gt; &#123;    </span><br><span class="line">        private final Class&lt;T&gt; enumType;  </span><br><span class="line">        public StringToEnum(Class&lt;T&gt; enumType) &#123;  </span><br><span class="line">            this.enumType = enumType;  </span><br><span class="line">        &#125;  </span><br><span class="line">        public T convert(String source) &#123;  </span><br><span class="line">            if (source.length() == 0) &#123;  </span><br><span class="line">                // It&apos;s an empty enum identifier: reset the enum value to null.  </span><br><span class="line">                return null;  </span><br><span class="line">            &#125;  </span><br><span class="line">            return (T) Enum.valueOf(this.enumType, source.trim());  </span><br><span class="line">        &#125;  </span><br><span class="line">    &#125;  </span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure></p>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;这段时间，在写一个简单的StringMVC中Controller 遇到一个这样的问题。&lt;br&gt;Controller类参数对象中，有一个属性是Date格式的，前台传值时，总是报HTTP 400 的错。&lt;br&gt;
    
    </summary>
    
      <category term="Spring" scheme="https://weixianginay.github.io/categories/Spring/"/>
    
    
      <category term="Spring" scheme="https://weixianginay.github.io/tags/Spring/"/>
    
  </entry>
  
  <entry>
    <title>SpringMVC Controller异常拦截@ControllerAdvice</title>
    <link href="https://weixianginay.github.io/2016/12/02/SpringMVC-Controller%E5%BC%82%E5%B8%B8%E6%8B%A6%E6%88%AA-ControllerAdvice/"/>
    <id>https://weixianginay.github.io/2016/12/02/SpringMVC-Controller异常拦截-ControllerAdvice/</id>
    <published>2016-12-02T08:18:10.000Z</published>
    <updated>2017-12-08T09:23:28.162Z</updated>
    
    <content type="html"><![CDATA[<p>最近在维护一个模块的API时，发现Controller中，如果参数在某些情况下，解析会产生异常。<br>一方面是代码考虑不周全，待完善。另一方面因为是API，只负责正确数据的处理，所以大部分异常都是参数没有按照正确的格式传入造成的。<br>所以 @ControllerAdvice 可以很好的捕获前台层面的异常。<br><a id="more"></a><br>1.创建一个java类，并加入注解。如下：<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br></pre></td><td class="code"><pre><span class="line">import com.lwl.api.service.common.bean.ResultCode;  </span><br><span class="line">import com.lwl.api.service.common.bean.ResultInfo;  </span><br><span class="line">import org.springframework.http.HttpStatus;  </span><br><span class="line">import org.springframework.web.bind.annotation.ControllerAdvice;  </span><br><span class="line">import org.springframework.web.bind.annotation.ExceptionHandler;  </span><br><span class="line">import org.springframework.web.bind.annotation.ResponseBody;  </span><br><span class="line">import org.springframework.web.bind.annotation.ResponseStatus;  </span><br><span class="line">import org.springframework.web.servlet.config.annotation.EnableWebMvc;  </span><br><span class="line">    </span><br><span class="line">@ControllerAdvice  </span><br><span class="line">public class GlobalExceptionHandler &#123;  </span><br><span class="line">    @ResponseStatus(HttpStatus.BAD_REQUEST)  </span><br><span class="line">    @ResponseBody  </span><br><span class="line">    @ExceptionHandler(Exception.class)  </span><br><span class="line">    public ResultInfo signException(Exception ex) &#123;  </span><br><span class="line">        ResultInfo resultInfo=new ResultInfo();  </span><br><span class="line">        resultInfo.setData(&quot;参数或格式错误&quot;);  </span><br><span class="line">        resultInfo.setResultCode(ResultCode.Exception);  </span><br><span class="line">        resultInfo.setMsg(&quot;异常信息：&quot;+ex.getMessage());  </span><br><span class="line">        return resultInfo;  </span><br><span class="line">    &#125;  </span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure></p><p>2.记得在XML文件里，扫描到该文件包<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">&lt;context:annotation-config/&gt;  </span><br><span class="line">&lt;context:component-scan base-package=&quot;com.***.***&quot;/&gt;</span><br></pre></td></tr></table></figure></p><p>PS:<br>如果以上代码，没有捕获成功。可以在 @ControllerAdvice 上面再加一个<strong>@EnableWebMvc</strong> 的注解。<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">@EnableWebMvc</span><br><span class="line">@ControllerAdvice</span><br></pre></td></tr></table></figure></p><p>—————20171208更新线————–<br>最近的在更新一个SpringBoot项目，发现boot项目大量使用注解完成配置。这个项目也是API项目，但是返回值不太一样，都继承一个类，和之前的泛型类很不一样。就在这个方法上扩展了下。<br>这是SpringBoot的配置：<br><figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br><span class="line">41</span><br><span class="line">42</span><br><span class="line">43</span><br><span class="line">44</span><br><span class="line">45</span><br><span class="line">46</span><br><span class="line">47</span><br><span class="line">48</span><br><span class="line">49</span><br><span class="line">50</span><br><span class="line">51</span><br><span class="line">52</span><br><span class="line">53</span><br></pre></td><td class="code"><pre><span class="line">@ControllerAdvice</span><br><span class="line">public class GlobalExceptionHandler &#123;</span><br><span class="line"></span><br><span class="line">    protected final Logger logger = LoggerFactory.getLogger(this.getClass());</span><br><span class="line"></span><br><span class="line">    @Autowired</span><br><span class="line">    private RequestMappingHandlerMapping handlerMapping;</span><br><span class="line"></span><br><span class="line">    @ResponseStatus(HttpStatus.BAD_REQUEST)</span><br><span class="line">    @ResponseBody</span><br><span class="line">    @ExceptionHandler(Exception.class)</span><br><span class="line">    public ResultBase signException(HttpServletRequest request, Exception e) &#123;</span><br><span class="line"></span><br><span class="line">        String resultMsg=&quot;操作异常：&quot;;</span><br><span class="line">        Map map =  this.handlerMapping.getHandlerMethods();</span><br><span class="line"></span><br><span class="line">        String path= request.getServletPath();</span><br><span class="line"></span><br><span class="line">        Iterator&lt;?&gt; iterator = map.entrySet().iterator();</span><br><span class="line">        boolean flag=true;</span><br><span class="line">        while(iterator.hasNext()&amp;&amp;flag)&#123;</span><br><span class="line">            Map.Entry entry = (Map.Entry) iterator.next();</span><br><span class="line">            RequestMappingInfo info= (RequestMappingInfo)entry.getKey();</span><br><span class="line">            Set&lt;String&gt; set= info.getPatternsCondition().getPatterns();</span><br><span class="line"></span><br><span class="line">            for(String c:set)&#123;</span><br><span class="line">                if(path.equals(c))&#123;</span><br><span class="line">                    HandlerMethod handlerMethod=(HandlerMethod) entry.getValue();</span><br><span class="line">                    Method method = handlerMethod.getMethod();</span><br><span class="line">                    boolean isToken = method.isAnnotationPresent(ApiOperation.class);</span><br><span class="line">                    if (isToken)&#123;</span><br><span class="line">                        ApiOperation annotation = method.getAnnotation(ApiOperation.class);</span><br><span class="line">                        resultMsg=annotation.value()+&quot;失败：&quot;;</span><br><span class="line">                    &#125;</span><br><span class="line">                    String err= handlerMethod.getBean().toString()+&quot;.&quot;+method.getName()+&quot; error&quot;;</span><br><span class="line">                    logger.error(err, e);</span><br><span class="line">                    flag=false;</span><br><span class="line">                &#125;</span><br><span class="line">            &#125;</span><br><span class="line">        &#125;</span><br><span class="line">        ResultBase resultBase=new ResultBase(OperInfoEnum.oper_fail, resultMsg+e);</span><br><span class="line"></span><br><span class="line">        return resultBase;</span><br><span class="line">    &#125;</span><br><span class="line"></span><br><span class="line">    @ResponseStatus(HttpStatus.BAD_REQUEST)</span><br><span class="line">    @ResponseBody</span><br><span class="line">    @ExceptionHandler(MissingServletRequestParameterException.class)</span><br><span class="line">    public ResultBase signException(MissingServletRequestParameterException e) &#123;</span><br><span class="line">        ResultBase resultBase=new ResultBase(OperInfoEnum.oper_null,&quot;参数为空：&quot;+e.getParameterName());</span><br><span class="line">        return resultBase;</span><br><span class="line">    &#125;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure></p><p>主要是细分了异常类的处理，和从Spring中获取所有的Mapping定位到具体的Controller（这里暂时没找到直接定位的方法），反射拿到注解上的参数，更友好的提示。</p><p>参考资料：</p><ul><li><a href="http://jinnianshilongnian.iteye.com/blog/1866350" target="_blank" rel="noopener">《Spring3.2新注解@ControllerAdvice》</a></li><li><a href="http://blog.csdn.NET/cesul/article/details/38539343" target="_blank" rel="noopener">《使用spring MVC的@ControllerAdvice注解做Json的异常处理》</a></li><li><a href="http://www.07net01.com/Linux/spring3_2_mvc__ControllerAdvice_buqizuoyong_554229_1375786240.html" target="_blank" rel="noopener">《@EnableWebMvc》</a></li></ul>]]></content>
    
    <summary type="html">
    
      &lt;p&gt;最近在维护一个模块的API时，发现Controller中，如果参数在某些情况下，解析会产生异常。&lt;br&gt;一方面是代码考虑不周全，待完善。另一方面因为是API，只负责正确数据的处理，所以大部分异常都是参数没有按照正确的格式传入造成的。&lt;br&gt;所以 @ControllerAdvice 可以很好的捕获前台层面的异常。&lt;br&gt;
    
    </summary>
    
      <category term="Spring" scheme="https://weixianginay.github.io/categories/Spring/"/>
    
    
      <category term="Spring" scheme="https://weixianginay.github.io/tags/Spring/"/>
    
  </entry>
  
</feed>
