-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathatom.xml
More file actions
181 lines (124 loc) · 35.3 KB
/
Copy pathatom.xml
File metadata and controls
181 lines (124 loc) · 35.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>To see a world in a flower</title>
<link href="/atom.xml" rel="self"/>
<link href="http://long0428.cc/"/>
<updated>2016-12-07T08:53:46.668Z</updated>
<id>http://long0428.cc/</id>
<author>
<name>Moss Zhang</name>
</author>
<generator uri="http://hexo.io/">Hexo</generator>
<entry>
<title>spring boot AOP</title>
<link href="http://long0428.cc/2016/12/07/spring%20boot%20AOP/"/>
<id>http://long0428.cc/2016/12/07/spring boot AOP/</id>
<published>2016-12-07T08:53:46.644Z</published>
<updated>2016-12-07T08:53:46.668Z</updated>
<content type="html"><![CDATA[<p>spring boot 越用越方便了,今天说一下怎么用AOP。</p>
<h3 id="pom-xml"><a href="#pom-xml" class="headerlink" title="pom.xml"></a>pom.xml</h3><p>在pom文件中加入aop,spring boot 会帮你搞定一切配置<br><figure class="highlight xml"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div></pre></td><td class="code"><pre><div class="line"><span class="tag"><<span class="name">dependency</span>></span></div><div class="line"><span class="tag"><<span class="name">groupId</span>></span>org.springframework.boot<span class="tag"></<span class="name">groupId</span>></span></div><div class="line"><span class="tag"><<span class="name">artifactId</span>></span>spring-boot-starter-aop<span class="tag"></<span class="name">artifactId</span>></span></div><div class="line"><span class="tag"></<span class="name">dependency</span>></span></div></pre></td></tr></table></figure></p>
<h3 id="切面代码"><a href="#切面代码" class="headerlink" title="切面代码"></a>切面代码</h3><figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div><div class="line">38</div><div class="line">39</div><div class="line">40</div><div class="line">41</div><div class="line">42</div><div class="line">43</div><div class="line">44</div><div class="line">45</div><div class="line">46</div></pre></td><td class="code"><pre><div class="line"><span class="keyword">package</span> com.kindo.aop;</div><div class="line"></div><div class="line"><span class="keyword">import</span> org.aspectj.lang.annotation.AfterReturning;</div><div class="line"><span class="keyword">import</span> org.aspectj.lang.annotation.Aspect;</div><div class="line"><span class="keyword">import</span> org.springframework.beans.factory.annotation.Autowired;</div><div class="line"><span class="keyword">import</span> org.springframework.stereotype.Component;</div><div class="line"></div><div class="line"><span class="keyword">import</span> com.kindo.bill.dao.BillMapper;</div><div class="line"><span class="keyword">import</span> com.kindo.bill.model.IllegalMoney;</div><div class="line"></div><div class="line"><span class="comment">/**</span></div><div class="line"> * <p></div><div class="line"> * Title: 医疗数据平台(单据审核信息管理)</div><div class="line"> * </p></div><div class="line"> * <p></div><div class="line"> * Description: AOP用于更新单据表的扣除金额。</div><div class="line"> * </p></div><div class="line"> * <p></div><div class="line"> * Copyright: Copyright (c) 2016</div><div class="line"> * </p></div><div class="line"> * <p></div><div class="line"> * Company: 金豆医疗数据[www.kindo.com.cn]</div><div class="line"> * </p></div><div class="line"> * </div><div class="line"> * <span class="doctag">@author</span> 张喻龙</div><div class="line"> * <span class="doctag">@version</span> 1.0</div><div class="line"> * </div><div class="line"> */</div><div class="line"><span class="meta">@Aspect</span></div><div class="line"><span class="meta">@Component</span></div><div class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">UpdateIllegalMoneyAop</span> </span>{</div><div class="line"></div><div class="line"> <span class="meta">@Autowired</span></div><div class="line"> <span class="keyword">private</span> BillMapper billMapper;</div><div class="line"></div><div class="line"> <span class="meta">@AfterReturning</span>(value = <span class="string">"execution(* com.kindo.bill.service.IllegalMoneyService.*UpdateBillAKC260(..)) && args(illegalMoney)"</span>, argNames = <span class="string">"illegalMoney"</span>)</div><div class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">afterReturning</span><span class="params">(IllegalMoney illegalMoney)</span> <span class="keyword">throws</span> Throwable </span>{</div><div class="line"> String akb020 = illegalMoney.getAkb020();</div><div class="line"> String akc190 = illegalMoney.getAkc190();</div><div class="line"> String aae072 = illegalMoney.getAae072();</div><div class="line"> String flowState = illegalMoney.getFlowState();</div><div class="line"> billMapper.updateBillAKC260(akb020, akc190, aae072,flowState);</div><div class="line"></div><div class="line"> }</div><div class="line"></div><div class="line">}</div></pre></td></tr></table></figure>
<blockquote>
<p>@AfterReturning : 切面匹配的方法成功执行并且无异常</p>
<p>execution(<em> com.kindo.bill.service.IllegalMoneyService.</em>UpdateBillAKC260(..)) && args(illegalMoney) : AOP表达式,该表达式的意思是:在com.kindo.bill.service.IllegalMoneyService下的方法名后缀为UpdateBillAKC260的被匹配,UpdateBillAKC260(..) 两个..意思是方法的参数个人和类型无限制。args(illegalMoney) 是方法接受的参数 </p>
</blockquote>
]]></content>
<summary type="html">
<p>spring boot 越用越方便了,今天说一下怎么用AOP。</p>
<h3 id="pom-xml"><a href="#pom-xml" class="headerlink" title="pom.xml"></a>pom.xml</h3><p>在pom文件中加入ao
</summary>
<category term="Spring boot" scheme="http://long0428.cc/tags/Spring-boot/"/>
<category term="aop" scheme="http://long0428.cc/tags/aop/"/>
</entry>
<entry>
<title>nginx 开启Gzip压缩</title>
<link href="http://long0428.cc/2016/12/04/nginx%E5%BC%80%E5%90%AF%E5%8E%8B%E7%BC%A9/"/>
<id>http://long0428.cc/2016/12/04/nginx开启压缩/</id>
<published>2016-12-04T02:51:02.256Z</published>
<updated>2016-12-04T02:51:02.314Z</updated>
<content type="html"><![CDATA[<p>最近发现前端的css和js加载很耗时,一个服务才33ms,静态文件加起来都几百毫秒了,于是开启nginx的压缩。</p>
<p>找到nginx.conf</p>
<figure class="highlight xml"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div></pre></td><td class="code"><pre><div class="line">gzip on;</div><div class="line"># 默认值: gzip off </div><div class="line"># 开启或者关闭gzip模块</div><div class="line"> </div><div class="line">gzip_comp_level 4;</div><div class="line"># 默认值:1(建议选择为4)</div><div class="line"># gzip压缩比/压缩级别,压缩级别 1-9,级别越高压缩率越大,当然压缩时间也就越长(传输快但比较消耗cpu)。</div><div class="line"> </div><div class="line">gzip_buffers 4 16k;</div><div class="line"># 默认值: gzip_buffers 4 4k/8k </div><div class="line"># 设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。 例如 4 4k 代表以4k为单位,按照原始数据大小以4k为单位的4倍申请内存。 4 8k 代表以8k为单位,按照原始数据大小以8k为单位的4倍申请内存。</div><div class="line"># 如果没有设置,默认值是申请跟原始数据相同大小的内存空间去存储gzip压缩结果。</div><div class="line"> </div><div class="line">gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php;</div><div class="line"># 默认值: gzip_types text/html (默认不对js/css文件进行压缩)</div><div class="line"># 压缩类型,匹配MIME类型进行压缩</div><div class="line"># 不能用通配符 text/*</div><div class="line"># (无论是否指定)text/html默认已经压缩 </div><div class="line"># 设置哪压缩种文本文件可参考 conf/mime.types</div><div class="line"> </div><div class="line">gzip_min_length 1k;</div><div class="line"># 默认值: 0 ,不管页面多大都压缩</div><div class="line"># 设置允许压缩的页面最小字节数,页面字节数从header头中的Content-Length中进行获取。</div><div class="line"># 建议设置成大于1k的字节数,小于1k可能会越压越大。 即: gzip_min_length 1024</div><div class="line"> </div><div class="line">gzip_vary on;</div><div class="line"># 和http头有关系,加个vary头,给代理服务器用的,有的浏览器支持压缩,有的不支持,所以避免浪费不支持的也压缩,所以根据客户端的HTTP头来判断,是否需要压缩</div><div class="line"> </div><div class="line">gzip_disable "MSIE [1-6].";</div><div class="line"># 禁用IE6的gzip压缩,又是因为杯具的IE6。当然,IE6目前依然广泛的存在,所以这里你也可以设置为“MSIE [1-5].”</div><div class="line"># IE6的某些版本对gzip的压缩支持很不好,会造成页面的假死,为了确保其它的IE6版本不出问题,所以建议加上gzip_disable的设置</div></pre></td></tr></table></figure>]]></content>
<summary type="html">
<p>最近发现前端的css和js加载很耗时,一个服务才33ms,静态文件加起来都几百毫秒了,于是开启nginx的压缩。</p>
<p>找到nginx.conf</p>
<figure class="highlight xml"><table><tr><td class="gutt
</summary>
<category term="nginx" scheme="http://long0428.cc/tags/nginx/"/>
</entry>
<entry>
<title>oracle 表分区实战</title>
<link href="http://long0428.cc/2016/12/01/oracle%20%E8%A1%A8%E5%88%86%E5%8C%BA/"/>
<id>http://long0428.cc/2016/12/01/oracle 表分区/</id>
<published>2016-12-01T12:05:23.874Z</published>
<updated>2016-12-01T12:05:23.910Z</updated>
<content type="html"><![CDATA[<p>数据库中的某些业务表,会存放很多历史数据,导致查询效率很慢,想用分区进行优化。根据业务下面我会进行几个分区:</p>
<h3 id="范围分区"><a href="#范围分区" class="headerlink" title="范围分区"></a>范围分区</h3><figure class="highlight sql"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div></pre></td><td class="code"><pre><div class="line"><span class="keyword">CREATE</span> <span class="keyword">TABLE</span> 表</div><div class="line">(字段)</div><div class="line"><span class="keyword">PARTITION</span> <span class="keyword">BY</span> <span class="keyword">RANGE</span> (birthday) </div><div class="line"><span class="built_in">INTERVAL</span>(NUMTOYMINTERVAL(<span class="number">1</span>, <span class="string">'month'</span>)) </div><div class="line">(<span class="keyword">PARTITION</span> P0 <span class="keyword">VALUES</span> <span class="keyword">LESS</span> <span class="keyword">THAN</span> (<span class="keyword">TO_DATE</span>(<span class="string">'2016-1-1'</span>, <span class="string">'yyyy-mm-dd'</span>)));</div></pre></td></tr></table></figure>
<blockquote>
<p>创建一个表,自动根据birthday的月份来进行分区。每个月都是一个独立的分区。查询这个表一般会根据birthday的范围来做查询。</p>
</blockquote>
<p>现在我们在来创建索引,分区表有全局索引和本地索引之分,如果大家要创建位图索引,只能创建本地索引</p>
<figure class="highlight sql"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line"><span class="keyword">create</span> <span class="keyword">bitmap</span> <span class="keyword">index</span> I_K_F_BILL_MACHINE_CHECK <span class="keyword">on</span> K_F_BILL(MACHINE_CHECK) <span class="keyword">local</span>;</div></pre></td></tr></table></figure>
<h3 id="哈希分区"><a href="#哈希分区" class="headerlink" title="哈希分区"></a>哈希分区</h3><blockquote>
<p>也被成为散列分区。<br>这类分区是在列值上使用哈希算法,以确定将行放入哪个分区中。当列的值没有合适的条件时,建议使用散哈希分区。<br>哈希分区为通过指定分区编号来均匀分布数据的一种分区类型,因为通过在I/O设备上进行散列分区,使得这些分区大小一致。<br>对于那些无法有效划分范围的表,可以使用hash分区,这样对于提高性能还是会有一定的帮助。hash分区会将表中的数据平均分配到你指定的几个分 区中,列所在分区是依据分区列的hash值自动分配,因此你并不能控制也不知道哪条记录会被放到哪个分区中,hash分区也可以支持多个依赖列。</p>
</blockquote>
<p>一个明细表,里面会根据医院编号,住院号、单据号来判断唯一性。查询这个明细表一定会带着这3个字段,所以这里根据医院编号来做哈希分区。</p>
<figure class="highlight sql"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div></pre></td><td class="code"><pre><div class="line"> <span class="keyword">CREATE</span> <span class="keyword">TABLE</span> 表</div><div class="line"> (</div><div class="line"> <span class="keyword">ID</span> VARCHAR2(<span class="number">32</span>) <span class="keyword">not</span> <span class="literal">null</span>,</div><div class="line"> AKB020 VARCHAR2(<span class="number">8</span>) <span class="keyword">not</span> <span class="literal">null</span>,</div><div class="line"> AKC190 VARCHAR2(<span class="number">18</span>) <span class="keyword">not</span> <span class="literal">null</span>,</div><div class="line"> AKC220 VARCHAR2(<span class="number">20</span>) <span class="keyword">not</span> <span class="literal">null</span>,</div><div class="line"> AAE072 VARCHAR2(<span class="number">18</span>) <span class="keyword">not</span> <span class="literal">null</span>,</div><div class="line"> AKC221 <span class="built_in">DATE</span> <span class="keyword">not</span> <span class="literal">null</span>,</div><div class="line"> AKA063 VARCHAR2(<span class="number">3</span>)</div><div class="line">)</div><div class="line"> <span class="keyword">PARTITION</span> <span class="keyword">BY</span> <span class="keyword">HASH</span> (AKB020)</div><div class="line"> <span class="keyword">PARTITIONS</span> <span class="number">32</span></div></pre></td></tr></table></figure>]]></content>
<summary type="html">
<p>数据库中的某些业务表,会存放很多历史数据,导致查询效率很慢,想用分区进行优化。根据业务下面我会进行几个分区:</p>
<h3 id="范围分区"><a href="#范围分区" class="headerlink" title="范围分区"></a>范围分区</h3><fi
</summary>
<category term="oracle" scheme="http://long0428.cc/tags/oracle/"/>
</entry>
<entry>
<title>jenkins Undeploy Failed Error</title>
<link href="http://long0428.cc/2016/12/01/jenkins%20Undeploy%20Failed%20Error/"/>
<id>http://long0428.cc/2016/12/01/jenkins Undeploy Failed Error/</id>
<published>2016-12-01T02:57:25.627Z</published>
<updated>2016-12-01T02:57:25.655Z</updated>
<content type="html"><![CDATA[<p>发现jenkins构建的时间无法删除自己发布的旧工程,导致构建失败。日志报 Failed to undeploy错误。</p>
<p>google了下,从2方面去解决。</p>
<p>第一个是看给的权限有没有缺少<br>第二个修改context.xml</p>
<h3 id="第一步、增加tomcat权限"><a href="#第一步、增加tomcat权限" class="headerlink" title="第一步、增加tomcat权限"></a>第一步、增加tomcat权限</h3><figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line"><user name=<span class="string">"admin"</span> password=<span class="string">"admin"</span> roles=<span class="string">"admin-gui,manager,manager-script,manager-jmx,manager-gui,manager-status"</span> /></div></pre></td></tr></table></figure>
<h3 id="第二步、修改context-xml-增加一句话"><a href="#第二步、修改context-xml-增加一句话" class="headerlink" title="第二步、修改context.xml 增加一句话"></a>第二步、修改context.xml 增加一句话</h3><figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div></pre></td><td class="code"><pre><div class="line"><Context antiResourceLocking=<span class="string">"true"</span>></div></pre></td></tr></table></figure>]]></content>
<summary type="html">
<p>发现jenkins构建的时间无法删除自己发布的旧工程,导致构建失败。日志报 Failed to undeploy错误。</p>
<p>google了下,从2方面去解决。</p>
<p>第一个是看给的权限有没有缺少<br>第二个修改context.xml</p>
<h3 id
</summary>
<category term="jenkins" scheme="http://long0428.cc/tags/jenkins/"/>
</entry>
<entry>
<title>spring boot 增加拦截器</title>
<link href="http://long0428.cc/2016/11/30/spring%20boot%E5%A2%9E%E5%8A%A0%E6%8B%A6%E6%88%AA%E5%99%A8/"/>
<id>http://long0428.cc/2016/11/30/spring boot增加拦截器/</id>
<published>2016-11-30T09:38:58.679Z</published>
<updated>2016-11-30T09:38:58.706Z</updated>
<content type="html"><![CDATA[<p>刚开始使用spring boot还是挺痛苦的,没有了各种XML反而不适应。。。这里给出如何注解添加一个拦截器</p>
<h3 id="第一步、继承WebMvcConfigurerAdapter"><a href="#第一步、继承WebMvcConfigurerAdapter" class="headerlink" title="第一步、继承WebMvcConfigurerAdapter"></a>第一步、继承WebMvcConfigurerAdapter</h3><figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div><div class="line">35</div><div class="line">36</div><div class="line">37</div></pre></td><td class="code"><pre><div class="line"><span class="keyword">package</span> com.kindo.config;</div><div class="line"></div><div class="line"><span class="keyword">import</span> org.springframework.context.annotation.Configuration;</div><div class="line"><span class="keyword">import</span> org.springframework.web.servlet.config.annotation.InterceptorRegistry;</div><div class="line"><span class="keyword">import</span> org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;</div><div class="line"><span class="keyword">import</span> org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;</div><div class="line"></div><div class="line"><span class="keyword">import</span> com.kindo.Interceptor.AuthorizationInterceptor;</div><div class="line"></div><div class="line"><span class="comment">/**</span></div><div class="line"> * <span class="doctag">@author</span> 张喻龙</div><div class="line"> * <span class="doctag">@since</span> 2015-12-19 16:16</div><div class="line"> */</div><div class="line"><span class="meta">@Configuration</span></div><div class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">WebMvcConfig</span> <span class="keyword">extends</span> <span class="title">WebMvcConfigurerAdapter</span> </span>{</div><div class="line"></div><div class="line"> <span class="comment">/**</span></div><div class="line"> * 指定一个路径,生成静态文件</div><div class="line"> */</div><div class="line"> <span class="meta">@Override</span></div><div class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">addResourceHandlers</span><span class="params">(ResourceHandlerRegistry registry)</span> </span>{</div><div class="line"> registry.addResourceHandler(<span class="string">"/static/**"</span>).addResourceLocations(<span class="string">"classpath:/static/"</span>);</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="comment">/**</span></div><div class="line"> * 增加一个拦截器</div><div class="line"> * </div><div class="line"> * </div><div class="line"> * addPathPatterns 用于添加拦截规则 excludePathPatterns 用户排除拦截</div><div class="line"> */</div><div class="line"> <span class="meta">@Override</span></div><div class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">addInterceptors</span><span class="params">(InterceptorRegistry registry)</span> </span>{</div><div class="line"> registry.addInterceptor(<span class="keyword">new</span> AuthorizationInterceptor()).addPathPatterns(<span class="string">"/**/api/**"</span>);</div><div class="line"> <span class="keyword">super</span>.addInterceptors(registry);</div><div class="line"> }</div><div class="line"></div><div class="line">}</div></pre></td></tr></table></figure>
<h3 id="第二步、拦截器代码"><a href="#第二步、拦截器代码" class="headerlink" title="第二步、拦截器代码"></a>第二步、拦截器代码</h3><figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div></pre></td><td class="code"><pre><div class="line"><span class="keyword">package</span> com.kindo.Interceptor;</div><div class="line"></div><div class="line"><span class="keyword">import</span> javax.servlet.http.HttpServletRequest;</div><div class="line"><span class="keyword">import</span> javax.servlet.http.HttpServletResponse;</div><div class="line"></div><div class="line"><span class="keyword">import</span> org.springframework.web.servlet.ModelAndView;</div><div class="line"><span class="keyword">import</span> org.springframework.web.servlet.handler.HandlerInterceptorAdapter;</div><div class="line"></div><div class="line"><span class="comment">/**</span></div><div class="line"> * 自定义拦截器</div><div class="line"> * </div><div class="line"> * <span class="doctag">@author</span> 张喻龙</div><div class="line"> *</div><div class="line"> */</div><div class="line"></div><div class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">AuthorizationInterceptor</span> <span class="keyword">extends</span> <span class="title">HandlerInterceptorAdapter</span> </span>{</div><div class="line"></div><div class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">boolean</span> <span class="title">preHandle</span><span class="params">(HttpServletRequest request, HttpServletResponse response, Object handler)</span></span></div><div class="line"> <span class="keyword">throws</span> Exception {</div><div class="line"> <span class="keyword">return</span> <span class="keyword">true</span>;</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="meta">@Override</span></div><div class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">postHandle</span><span class="params">(HttpServletRequest request, HttpServletResponse response, Object handler,</span></span></div><div class="line"> ModelAndView modelAndView) <span class="keyword">throws</span> Exception {</div><div class="line"> System.out.println(<span class="string">"求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)"</span>);</div><div class="line"> }</div><div class="line"></div><div class="line"> <span class="meta">@Override</span></div><div class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">afterCompletion</span><span class="params">(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)</span></span></div><div class="line"> <span class="keyword">throws</span> Exception {</div><div class="line"> System.out.println(<span class="string">"在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作)"</span>);</div><div class="line"> }</div><div class="line">}</div></pre></td></tr></table></figure>]]></content>
<summary type="html">
<p>刚开始使用spring boot还是挺痛苦的,没有了各种XML反而不适应。。。这里给出如何注解添加一个拦截器</p>
<h3 id="第一步、继承WebMvcConfigurerAdapter"><a href="#第一步、继承WebMvcConfigurerAdapter
</summary>
<category term="Spring-Boot" scheme="http://long0428.cc/tags/Spring-Boot/"/>
<category term="拦截器" scheme="http://long0428.cc/tags/%E6%8B%A6%E6%88%AA%E5%99%A8/"/>
</entry>
<entry>
<title>自定义jsckson null转换为字符串</title>
<link href="http://long0428.cc/2016/11/29/%E8%87%AA%E5%AE%9A%E4%B9%89jsckson%20null%E8%BD%AC%E6%8D%A2%E4%B8%BA%E5%AD%97%E7%AC%A6%E4%B8%B2/"/>
<id>http://long0428.cc/2016/11/29/自定义jsckson null转换为字符串/</id>
<published>2016-11-29T08:52:26.045Z</published>
<updated>2016-11-29T09:39:42.023Z</updated>
<content type="html"><![CDATA[<p>在使用spring boot中,默认配置使用jackson时,对象的null值也会被解析成null输出到前台,我们需要把null转换成空字符串</p>
<h3 id="第一步、自定义ObjectMapper"><a href="#第一步、自定义ObjectMapper" class="headerlink" title="第一步、自定义ObjectMapper"></a>第一步、自定义ObjectMapper</h3><figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div><div class="line">13</div><div class="line">14</div><div class="line">15</div><div class="line">16</div><div class="line">17</div><div class="line">18</div><div class="line">19</div><div class="line">20</div><div class="line">21</div><div class="line">22</div><div class="line">23</div><div class="line">24</div><div class="line">25</div><div class="line">26</div><div class="line">27</div><div class="line">28</div><div class="line">29</div><div class="line">30</div><div class="line">31</div><div class="line">32</div><div class="line">33</div><div class="line">34</div></pre></td><td class="code"><pre><div class="line"><span class="keyword">package</span> com.kindo.config;</div><div class="line"></div><div class="line"><span class="keyword">import</span> java.io.IOException;</div><div class="line"><span class="keyword">import</span> com.fasterxml.jackson.core.JsonGenerator;</div><div class="line"><span class="keyword">import</span> com.fasterxml.jackson.core.JsonProcessingException;</div><div class="line"><span class="keyword">import</span> com.fasterxml.jackson.databind.JsonSerializer;</div><div class="line"><span class="keyword">import</span> com.fasterxml.jackson.databind.ObjectMapper;</div><div class="line"><span class="keyword">import</span> com.fasterxml.jackson.databind.SerializerProvider;</div><div class="line"></div><div class="line"><span class="keyword">public</span> <span class="class"><span class="keyword">class</span> <span class="title">KindoObjectMapper</span> <span class="keyword">extends</span> <span class="title">ObjectMapper</span> </span>{</div><div class="line"></div><div class="line"> <span class="comment">/**</span></div><div class="line"> * </div><div class="line"> */</div><div class="line"> <span class="keyword">private</span> <span class="keyword">static</span> <span class="keyword">final</span> <span class="keyword">long</span> serialVersionUID = <span class="number">1L</span>;</div><div class="line"></div><div class="line"> <span class="function"><span class="keyword">public</span> <span class="title">KindoObjectMapper</span><span class="params">()</span> </span>{</div><div class="line"> <span class="keyword">super</span>();</div><div class="line"> <span class="comment">// 数字也加引号</span></div><div class="line"> <span class="comment">// this.configure(JsonGenerator.Feature.WRITE_NUMBERS_AS_STRINGS, true);</span></div><div class="line"> <span class="comment">// this.configure(JsonGenerator.Feature.QUOTE_NON_NUMERIC_NUMBERS,</span></div><div class="line"> <span class="comment">// true);</span></div><div class="line"> <span class="comment">// 空值处理为空串</span></div><div class="line"> <span class="keyword">this</span>.getSerializerProvider().setNullValueSerializer(<span class="keyword">new</span> JsonSerializer<Object>() {</div><div class="line"> <span class="meta">@Override</span></div><div class="line"> <span class="function"><span class="keyword">public</span> <span class="keyword">void</span> <span class="title">serialize</span><span class="params">(Object value, JsonGenerator jg, SerializerProvider sp)</span></span></div><div class="line"> <span class="keyword">throws</span> IOException, JsonProcessingException {</div><div class="line"> jg.writeString(<span class="string">""</span>);</div><div class="line"> }</div><div class="line"> });</div><div class="line"></div><div class="line"> }</div><div class="line"></div><div class="line">}</div></pre></td></tr></table></figure>
<h3 id="第二步、修改SpringBoot启动类"><a href="#第二步、修改SpringBoot启动类" class="headerlink" title="第二步、修改SpringBoot启动类"></a>第二步、修改SpringBoot启动类</h3><figure class="highlight java"><table><tr><td class="gutter"><pre><div class="line">1</div><div class="line">2</div><div class="line">3</div><div class="line">4</div><div class="line">5</div><div class="line">6</div><div class="line">7</div><div class="line">8</div><div class="line">9</div><div class="line">10</div><div class="line">11</div><div class="line">12</div></pre></td><td class="code"><pre><div class="line"><span class="comment">/**</span></div><div class="line"> * 自定义ObjectMapper</div><div class="line"> * </div><div class="line"> * <span class="doctag">@return</span></div><div class="line"> */</div><div class="line"><span class="meta">@Bean</span></div><div class="line"><span class="function"><span class="keyword">public</span> MappingJackson2HttpMessageConverter <span class="title">mappingJacksonHttpMessageConverter</span><span class="params">()</span> </span>{</div><div class="line"> <span class="keyword">final</span> MappingJackson2HttpMessageConverter converter = <span class="keyword">new</span> MappingJackson2HttpMessageConverter();</div><div class="line"> KindoObjectMapper mapper = <span class="keyword">new</span> KindoObjectMapper();</div><div class="line"> converter.setObjectMapper(mapper);</div><div class="line"> <span class="keyword">return</span> converter;</div><div class="line">}</div></pre></td></tr></table></figure>]]></content>
<summary type="html">
<p>在使用spring boot中,默认配置使用jackson时,对象的null值也会被解析成null输出到前台,我们需要把null转换成空字符串</p>
<h3 id="第一步、自定义ObjectMapper"><a href="#第一步、自定义ObjectMapper" c
</summary>
<category term="Spring-Boot" scheme="http://long0428.cc/tags/Spring-Boot/"/>
<category term="jsckson" scheme="http://long0428.cc/tags/jsckson/"/>
</entry>
</feed>