??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲AV电影院在线观看,亚洲国产成人久久,亚洲小说区图片区http://www.tkk7.com/miaoyachun/zh-cnWed, 02 Jul 2025 14:43:19 GMTWed, 02 Jul 2025 14:43:19 GMT60Spring boot外部配置-配置中心?/title><link>http://www.tkk7.com/miaoyachun/archive/2017/12/08/432940.html</link><dc:creator>Milo的v?/dc:creator><author>Milo的v?/author><pubDate>Fri, 08 Dec 2017 06:13:00 GMT</pubDate><guid>http://www.tkk7.com/miaoyachun/archive/2017/12/08/432940.html</guid><wfw:comment>http://www.tkk7.com/miaoyachun/comments/432940.html</wfw:comment><comments>http://www.tkk7.com/miaoyachun/archive/2017/12/08/432940.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/miaoyachun/comments/commentRss/432940.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/miaoyachun/services/trackbacks/432940.html</trackback:ping><description><![CDATA[在Spring cloud config出来之前, 自己实现了基于ZK的配|中? 杜绝了本地properties配置文g, 原理很简? 只是重蝲了PropertyPlaceholderConfigurer的mergeProperties():<br /><br /><div><pre style="background-color:#2b2b2b;color:#a9b7c6;font-family:'宋体';font-size:10.5pt;"><span style="color:#629755;font-style:italic;">/**<br /></span><span style="color:#629755;font-style:italic;"> * 重蝲合ƈ属性实?br /></span><span style="color:#629755;font-style:italic;"> * 先加载file propertiesQ?然后q入ZK配置中心d的properties<br /></span><span style="color:#629755;font-style:italic;"> *<br /></span><span style="color:#629755;font-style:italic;"> * </span><span style="color:#629755;font-weight:bold;font-style:italic;">@return </span><span style="color:#629755;font-style:italic;">合ƈ后的属性集?br /></span><span style="color:#629755;font-style:italic;"> * </span><span style="color:#629755;font-weight:bold;font-style:italic;">@throws </span><span style="color:#629755;font-style:italic;">IOException 异常<br /></span><span style="color:#629755;font-style:italic;"> */<br /></span><span style="color:#bbb529;">@Override<br /></span><span style="color:#cc7832;">protected </span>Properties <span style="color:#ffc66d;">mergeProperties</span>() <span style="color:#cc7832;">throws </span>IOException {<br /> Properties result = <span style="color:#cc7832;">new </span>Properties()<span style="color:#cc7832;">;<br /></span> <span style="color:#808080;"> // 加蝲父类的配|?br /></span> Properties mergeProperties = <span style="color:#cc7832;">super</span>.mergeProperties()<span style="color:#cc7832;">;<br /></span> result.putAll(mergeProperties)<span style="color:#cc7832;">;<br /></span> <span style="color:#808080;"> // 加蝲从zk中读取到的配|?br /></span> Map<String<span style="color:#cc7832;">, </span>String> configs = loadZkConfigs()<span style="color:#cc7832;">;<br /></span> result.putAll(configs)<span style="color:#cc7832;">;<br /></span><span style="color:#cc7832;"> return </span>result<span style="color:#cc7832;">;<br /></span>}</pre></div><br />q个实现在spring目里用hq是挺顺手的, 但是q期部分spring-boot目里发现这Uplaceholder的实现跟spring boot的@ConfigurationProperties(prefix = "xxx") 不能很好的配合工?<br />也就是属性没有被resolve处理, 用@Value的方式确可以d, 但是@Value配置h如果属性多的话q是挺繁琐的, q是們֐用@ConfigurationProperties的prefix, 于是看了下spring boot的文发?code>PropertySource</code> order:<div></div><div><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">   * Devtools global settings properties on your home directory (~/.spring-boot-devtools.properties when devtools is active).<br />   * @TestPropertySource annotations on your tests.<br />   * @SpringBootTest#properties annotation attribute on your tests.<br />   * Command line arguments.<br />   * Properties from SPRING_APPLICATION_JSON (inline JSON embedded in an environment variable or system property)<br />   * ServletConfig init parameters.<br />   * ServletContext init parameters.<br />   * JNDI attributes from java:comp/env.<br />   * Java System properties (System.getProperties()).<br />   * OS environment variables.<br />   * A RandomValuePropertySource that only has properties in random.*.<br />   * Profile-specific application properties outside of your packaged jar (application-{profile}.properties and YAML variants)<br />   * Profile-specific application properties packaged inside your jar (application-{profile}.properties and YAML variants)<br />   * Application properties outside of your packaged jar (application.properties and YAML variants).<br />   * Application properties packaged inside your jar (application.properties and YAML variants).<br />   * @PropertySource annotations on your @Configuration classes.<br />   * Default properties (specified using SpringApplication.setDefaultProperties).</span></div></div><div></div>不难发现其会查Java system propeties里的属? 也就是说, 只要把mergerPropertiesd的属性写入Java system props里即? 看了下源? 扑ֈ个切入点<br /><br /><div><pre style="background-color:#2b2b2b;color:#a9b7c6;font-family:'宋体';font-size:10.5pt;"><span style="color:#629755;font-style:italic;">/**<br /></span><span style="color:#629755;font-style:italic;"> * 重蝲处理属性实?br /></span><span style="color:#629755;font-style:italic;"> * Ҏ选项, 军_是否合q后的props写入pȝ属? Spring boot需?br /></span><span style="color:#629755;font-style:italic;"> *<br /></span><span style="color:#629755;font-style:italic;"> * </span><span style="color:#629755;font-weight:bold;font-style:italic;">@param </span><span style="color:#8a653b;font-style:italic;">beanFactoryToProcess<br /></span> <span style="color:#629755;font-style:italic;">* </span><span style="color:#629755;font-weight:bold;font-style:italic;">@param </span><span style="color:#8a653b;font-style:italic;">props </span><span style="color:#629755;font-style:italic;">合ƈ后的属?br /></span><span style="color:#629755;font-style:italic;"> * </span><span style="color:#629755;font-weight:bold;font-style:italic;">@throws </span><span style="color:#629755;font-style:italic;">BeansException<br /></span><span style="color:#629755;font-style:italic;"> */<br /></span><span style="color:#bbb529;">@Override<br /></span><span style="color:#cc7832;">protected void </span><span style="color:#ffc66d;">processProperties</span>(ConfigurableListableBeanFactory beanFactoryToProcess<span style="color:#cc7832;">, </span>Properties props) <span style="color:#cc7832;">throws </span>BeansException {<br /> <span style="color:#808080;">// 原有逻辑<br /></span> <span style="color:#cc7832;">super</span>.processProperties(beanFactoryToProcess<span style="color:#cc7832;">, </span>props)<span style="color:#cc7832;">;<br /></span> <span style="color:#808080;"> // 写入到系l属?br /></span> <span style="color:#cc7832;"> if </span>(<span style="color:#9876aa;">writePropsToSystem</span>) {<br /> <span style="color:#808080;">// write all properties to system for spring boot<br /></span> Enumeration<?> propertyNames = props.propertyNames()<span style="color:#cc7832;">;<br /></span><span style="color:#cc7832;"> while </span>(propertyNames.hasMoreElements()) {<br /> String propertyName = (String) propertyNames.nextElement()<span style="color:#cc7832;">;<br /></span> String propertyValue = props.getProperty(propertyName)<span style="color:#cc7832;">;<br /></span> System.<span style="font-style:italic;">setProperty</span>(propertyName<span style="color:#cc7832;">, </span>propertyValue)<span style="color:#cc7832;">;<br /></span> }<br /> }<br />}</pre></div>为避免媄响过? 讄了个开? 是否写入pȝ属? 如果是spring boot的项? 开? q样对线上非spring boot目做到影响最? 然后spring boot的@ConfigurationProperties完美d属?<br /><br />具体代码? org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor<br /><br /><div><pre style="background-color: #2b2b2b; color: #a9b7c6; font-family: "宋体"; font-size: 10.5pt;"><span style="color:#bbb529;">@Override<br /></span><span style="color:#cc7832;">public </span>Object <span style="color:#ffc66d;">postProcessBeforeInitialization</span>(Object bean<span style="color:#cc7832;">, </span>String beanName)<br /> <span style="color:#cc7832;">throws </span>BeansException {<br /> <span style="color:#bbb529;">ConfigurationProperties </span>annotation = AnnotationUtils<br /> .<span style="font-style:italic;">findAnnotation</span>(bean.getClass()<span style="color:#cc7832;">, </span><span style="color:#bbb529;">ConfigurationProperties</span>.<span style="color:#cc7832;">class</span>)<span style="color:#cc7832;">;<br /></span><span style="color:#cc7832;"> if </span>(annotation != <span style="color:#cc7832;">null</span>) {<br /> postProcessBeforeInitialization(bean<span style="color:#cc7832;">, </span>beanName<span style="color:#cc7832;">, </span>annotation)<span style="color:#cc7832;">;<br /></span> }<br /> annotation = <span style="color:#cc7832;">this</span>.<span style="color:#9876aa;">beans</span>.findFactoryAnnotation(beanName<span style="color:#cc7832;">,<br /></span> <span style="color:#bbb529;">ConfigurationProperties</span>.<span style="color:#cc7832;">class</span>)<span style="color:#cc7832;">;<br /></span><span style="color:#cc7832;"> if </span>(annotation != <span style="color:#cc7832;">null</span>) {<br /> postProcessBeforeInitialization(bean<span style="color:#cc7832;">, </span>beanName<span style="color:#cc7832;">, </span>annotation)<span style="color: #cc7832;">;<br /></span> }<br /> <span style="color:#cc7832;">return </span>bean<span style="color:#cc7832;">;<br /></span>}</pre></div><br /><img src ="http://www.tkk7.com/miaoyachun/aggbug/432940.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/miaoyachun/" target="_blank">Milo的v?/a> 2017-12-08 14:13 <a href="http://www.tkk7.com/miaoyachun/archive/2017/12/08/432940.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Junit @AfterClass讉K注入对象的方?/title><link>http://www.tkk7.com/miaoyachun/archive/2017/04/15/432461.html</link><dc:creator>Milo的v?/dc:creator><author>Milo的v?/author><pubDate>Sat, 15 Apr 2017 02:32:00 GMT</pubDate><guid>http://www.tkk7.com/miaoyachun/archive/2017/04/15/432461.html</guid><wfw:comment>http://www.tkk7.com/miaoyachun/comments/432461.html</wfw:comment><comments>http://www.tkk7.com/miaoyachun/archive/2017/04/15/432461.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/miaoyachun/comments/commentRss/432461.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/miaoyachun/services/trackbacks/432461.html</trackback:ping><description><![CDATA[<div><span data-slate-fragment="JTdCJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMmtpbmQlMjIlM0ElMjJkb2N1bWVudCUyMiUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMmtpbmQlMjIlM0ElMjJibG9jayUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2luZCUyMiUzQSUyMnRleHQlMjIlMkMlMjJyYW5nZXMlMjIlM0ElNUIlN0IlMjJraW5kJTIyJTNBJTIycmFuZ2UlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyU3ByaW5nJUU5JUJCJTk4JUU4JUFFJUE0JUU0JUI4JThEJUU1JTg1JTgxJUU4JUFFJUI4JUU1JUFGJUI5JUU3JUIxJUJCJUU3JTlBJTg0JUU1JThGJTk4JUU5JTg3JThGJTJDJTIwJUU0JUI5JTlGJUU1JUIwJUIxJUU2JTk4JUFGJUU5JTlEJTk5JUU2JTgwJTgxJUU1JThGJTk4JUU5JTg3JThGJUU4JUJGJTlCJUU4JUExJThDJUU2JUIzJUE4JUU1JTg1JUE1JUU2JTkzJThEJUU0JUJEJTlDJTJDJTIwJUU0JUJEJTg2JUU2JTk4JUFGJUU1JTlDJUE4JUU2JTlGJTkwJUU0JUJBJTlCJUU1JTlDJUJBJUU2JTk5JUFGJUU2JUFGJTk0JUU1JUE2JTgyJUU1JThEJTk1JUU1JTg1JTgzJUU2JUI1JThCJUU4JUFGJTk1JUU3JTlBJTg0JTQwQWZ0ZXJDbGFzcyVFOCVBNiU4MSVFOCVBRSVCRiVFOSU5NyVBRSVFNiVCMyVBOCVFNSU4NSVBNSVFNSVBRiVCOSVFOCVCMSVBMSUyQyUyMCVFOCU4MCU4Q0p1bml0JUU3JTlBJTg0JUU4JUJGJTk5JUU0JUI4JUFBJUU2JTk2JUI5JUU2JUIzJTk1JUU1JUJGJTg1JUU5JUExJUJCJUU2JTk4JUFGJUU5JTlEJTk5JUU2JTgwJTgxJUU3JTlBJTg0JTJDJTIwJUU0JUI5JTlGJUU1JUIwJUIxJUU0JUJBJUE3JUU3JTk0JTlGJUU0JUJBJTg2JUU2JTgyJTk2JUU4JUFFJUJBJTNCJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIya2luZCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJraW5kJTIyJTNBJTIydGV4dCUyMiUyQyUyMnJhbmdlcyUyMiUzQSU1QiU3QiUyMmtpbmQlMjIlM0ElMjJyYW5nZSUyMiUyQyUyMnRleHQlMjIlM0ElMjIlRTglQTclQTMlRTUlODYlQjMlRTYlODAlOUQlRTglQjclQUYlRTYlOUMlODklRTQlQjglQTQlRTQlQjglQUElM0ElMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJraW5kJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMnR5cGUlMjIlM0ElMjJ1bm9yZGVyZWRfbGlzdCUyMiUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMmtpbmQlMjIlM0ElMjJibG9jayUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIydHlwZSUyMiUzQSUyMmxpc3RfaXRlbSUyMiUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMmtpbmQlMjIlM0ElMjJibG9jayUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIydHlwZSUyMiUzQSUyMnVuc3R5bGVkJTIyJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJraW5kJTIyJTNBJTIydGV4dCUyMiUyQyUyMnJhbmdlcyUyMiUzQSU1QiU3QiUyMmtpbmQlMjIlM0ElMjJyYW5nZSUyMiUyQyUyMnRleHQlMjIlM0ElMjIlRTYlODAlOUQlRTglQjclQUYxJTNBJTIwJUU2JTgzJUIzJUU1JThBJTlFJUU2JUIzJTk1JUU1JUFGJUI5JUU5JTlEJTk5JUU2JTgwJTgxJUU1JThGJTk4JUU5JTg3JThGJUU2JUIzJUE4JUU1JTg1JUE1JTJDJTIwJUU0JUI5JTlGJUU1JUIwJUIxJUU2JTk4JUFGJUU3JUJCJTk1JUU4JUJGJTg3U3ByaW5nJUU1JThGJUFBJUU4JTgzJUJEJUU4JUJGJTkwJUU4JUExJThDJUU5JTlEJTlFJUU5JTlEJTk5JUU2JTgwJTgxJUU1JThGJTk4JUU5JTg3JThGJUU2JTg5JThEJUU4JTgzJUJEJUU2JUIzJUE4JUU1JTg1JUE1JUU0JUJFJTlEJUU4JUI1JTk2JUU3JTlBJTg0JUU1JUEzJTgxJUU1JTlFJTkyJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIya2luZCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJ0eXBlJTIyJTNBJTIybGlzdF9pdGVtJTIyJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIya2luZCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJ0eXBlJTIyJTNBJTIydW5zdHlsZWQlMjIlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtpbmQlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIycmFuZ2VzJTIyJTNBJTVCJTdCJTIya2luZCUyMiUzQSUyMnJhbmdlJTIyJTJDJTIydGV4dCUyMiUzQSUyMiVFNiU4MCU5RCVFOCVCNyVBRjIlM0ElMjAlRTYlODMlQjMlRTUlOEElOUUlRTYlQjMlOTUlNDBBZnRlckNsYXNzJUU2JTk0JUI5JUU5JTgwJUEwJUU0JUI4JUJBJUU5JTlEJTlFJUU5JTlEJTk5JUU2JTgwJTgxJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIya2luZCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJ0eXBlJTIyJTNBJTIydW5vcmRlcmVkX2xpc3QlMjIlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJraW5kJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMnR5cGUlMjIlM0ElMjJsaXN0X2l0ZW0lMjIlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJraW5kJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMnR5cGUlMjIlM0ElMjJ1bnN0eWxlZCUyMiUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2luZCUyMiUzQSUyMnRleHQlMjIlMkMlMjJyYW5nZXMlMjIlM0ElNUIlN0IlMjJraW5kJTIyJTNBJTIycmFuZ2UlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJUU1JUFFJTlFJUU3JThFJUIwSnVuaXQlMjBSdW5MaXN0ZW5lciUyQyUyMCVFOCVBNiU4NiVFNyU5QiU5NnRlc3RSdW5GaW5pc2hlZCVFNiU5NiVCOSVFNiVCMyU5NSUyQyUyMCVFOCVCRiU5OSVFOSU4NyU4QyVFNSU4RSVCQiVFNSVBRSU5RSVFNyU4RSVCMCVFNyVCMSVCQiVFNCVCQyVCQyU0MEFmdGVyQ2xhc3MlRTclOUElODQlRTUlOEElOUYlRTglODMlQkQlMkMlMjAlRTglQkYlOTklRTQlQjglQUElRTYlOTYlQjklRTYlQjMlOTUlRTYlOTglQUYlRTklOUQlOUUlRTklOUQlOTklRTYlODAlODElRTclOUElODQlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJraW5kJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMnR5cGUlMjIlM0ElMjJsaXN0X2l0ZW0lMjIlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJraW5kJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMnR5cGUlMjIlM0ElMjJ1bnN0eWxlZCUyMiUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2luZCUyMiUzQSUyMnRleHQlMjIlMkMlMjJyYW5nZXMlMjIlM0ElNUIlN0IlMjJraW5kJTIyJTNBJTIycmFuZ2UlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJUU0JUI4JThEJUU4JUE2JTgxJUU3JTk0JUE4SnVuaXQlMkMlMjAlRTYlOTQlQjklRTclOTQlQThUZXN0TkclMkMlMjBUZXN0TkclRTklODclOEMlRTclOUElODRBZnRlckNsYXNzJUU2JTk4JUFGJUU5JTlEJTlFJUU5JTlEJTk5JUU2JTgwJTgxJUU3JTlBJTg0JTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIya2luZCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJ0eXBlJTIyJTNBJTIybGlzdF9pdGVtJTIyJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIya2luZCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJ0eXBlJTIyJTNBJTIydW5zdHlsZWQlMjIlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtpbmQlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIycmFuZ2VzJTIyJTNBJTVCJTdCJTIya2luZCUyMiUzQSUyMnJhbmdlJTIyJTJDJTIydGV4dCUyMiUzQSUyMiVFNyU5NCVBOFNwcmluZyVFNyU5QSU4NFRlc3RFeGVjdXRpb25MaXN0ZW5lcnMlMkMlMjAlRTUlQUUlOUUlRTclOEUlQjAlRTQlQjglQUFMaXN0ZW5lciUyQyUyMCVFOSU4NyU4QyVFOSU5RCVBMiVFNCVCOSU5RiVFNiU5QyU4OSVFNCVCOCVBQSVFNyVCMSVCQiVFNCVCQyVCQyVFOSU5RCU5RSVFOSU5RCU5OSVFNiU4MCU4MSVFNyU5QSU4NEFmdGVyQ2xhc3MlRTclOUElODQlRTUlQUUlOUUlRTclOEUlQjAlMkMlMjAlRTglQTYlODYlRTclOUIlOTYlRTUlQUUlOUUlRTclOEUlQjAlRTUlQjAlQjElRTglQTElOEMlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCU1RCU3RCU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJraW5kJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMnR5cGUlMjIlM0ElMjJwYXJhZ3JhcGglMjIlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtpbmQlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIycmFuZ2VzJTIyJTNBJTVCJTdCJTIya2luZCUyMiUzQSUyMnJhbmdlJTIyJTJDJTIydGV4dCUyMiUzQSUyMiVFNiU4MCU5RCVFOCVCNyVBRjIlRTclOUElODQlRTUlODclQTAlRTQlQjglQUElRTYlOTYlQjklRTYlQjMlOTUlRTklODMlQkQlRTUlOEYlQUYlRTQlQkIlQTUlRTUlQUUlOUUlRTclOEUlQjAlMkMlMjAlRTQlQkQlODYlRTYlOTglQUYlRTUlOEQlOTUlRTUlODUlODMlRTYlQjUlOEIlRTglQUYlOTVSdW5uZXIlRTklOUMlODAlRTglQTYlODElRTclOTQlQTglMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMmRhdGElMjIlM0ElN0IlMjJzeW50YXglMjIlM0ElMjJqYXZhJTIyJTdEJTJDJTIya2luZCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZV9ibG9jayUyMiUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMmtpbmQlMjIlM0ElMjJibG9jayUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIydHlwZSUyMiUzQSUyMmNvZGVfbGluZSUyMiUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2luZCUyMiUzQSUyMnRleHQlMjIlMkMlMjJyYW5nZXMlMjIlM0ElNUIlN0IlMjJraW5kJTIyJTNBJTIycmFuZ2UlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTQwUnVuV2l0aChUaGVvcmllcy5jbGFzcyklMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJraW5kJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMnR5cGUlMjIlM0ElMjJwYXJhZ3JhcGglMjIlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtpbmQlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIycmFuZ2VzJTIyJTNBJTVCJTdCJTIya2luZCUyMiUzQSUyMnJhbmdlJTIyJTJDJTIydGV4dCUyMiUzQSUyMiVFOCU4MCU4QyVFNCVCOCU5NCVFNiU5NCVCOSVFNyU5NCVBOFRlc3RORyVFNSVCNyVBNSVFNyVBOCU4QiVFNiVCNSVBOSVFNSVBNCVBNyUyQyUyMCVFNSU4RiVBQSVFOCU4MyVCRCVFNiU5NCVCRSVFNSVCQyU4MyVFNiU4RSU4OSVFOCVCRiU5OSVFNCVCOCVBQSVFNiU4MCU5RCVFOCVCNyVBRiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMmtpbmQlMjIlM0ElMjJibG9jayUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2luZCUyMiUzQSUyMnRleHQlMjIlMkMlMjJyYW5nZXMlMjIlM0ElNUIlN0IlMjJraW5kJTIyJTNBJTIycmFuZ2UlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJUU3JUJCJUE3JUU3JUJCJUFEJUU4JUI1JUIwJUU2JTgwJTlEJUU4JUI3JUFGMSUyQyUyMCVFNSU4RiVBQSVFOCU4MyVCRCVFNSU4RSVCQiVFNyVCQiU5NSVFOCVCRiU4N1NwcmluZyVFNyU5QSU4NCVFNCVCRSU5RCVFOCVCNSU5NiVFNiVCMyVBOCVFNSU4NSVBNSVFNyU5QSU4NHN0YXRpYyVFNSVBMyU4MSVFNSU5RSU5MiVFNCVCQSU4NiUyQyUyMCVFNSU4NSVCNyVFNCVCRCU5MyVFNCVCQiVBMyVFNyVBMCU4MSVFNSVBNiU4MiVFNCVCOCU4QiUzQSUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyZGF0YSUyMiUzQSU3QiUyMnN5bnRheCUyMiUzQSUyMmphdmElMjIlN0QlMkMlMjJraW5kJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlX2Jsb2NrJTIyJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIya2luZCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZV9saW5lJTIyJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJraW5kJTIyJTNBJTIydGV4dCUyMiUyQyUyMnJhbmdlcyUyMiUzQSU1QiU3QiUyMmtpbmQlMjIlM0ElMjJyYW5nZSUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjAlNDBBdXRvd2lyZWQlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJraW5kJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlX2xpbmUlMjIlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtpbmQlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIycmFuZ2VzJTIyJTNBJTVCJTdCJTIya2luZCUyMiUzQSUyMnJhbmdlJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMCUyMCUyMCUyMHByaXZhdGUlMjBEZXN0aW5hdGlvbiUyMGRmc09wZXJhdGlvblF1ZXVlJTNCJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIya2luZCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZV9saW5lJTIyJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJraW5kJTIyJTNBJTIydGV4dCUyMiUyQyUyMnJhbmdlcyUyMiUzQSU1QiU3QiUyMmtpbmQlMjIlM0ElMjJyYW5nZSUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjBwcml2YXRlJTIwc3RhdGljJTIwRGVzdGluYXRpb24lMjBkZnNPcGVyYXRpb25RdWV1ZVN0YXRpYyUzQiUyMCUyRiUyRiUyMHN0YXRpYyUyMHZlcnNpb24lMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJraW5kJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlX2xpbmUlMjIlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtpbmQlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIycmFuZ2VzJTIyJTNBJTVCJTdCJTIya2luZCUyMiUzQSUyMnJhbmdlJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMCUyMCUyMCUyMCU0MEF1dG93aXJlZCUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMmtpbmQlMjIlM0ElMjJibG9jayUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIydHlwZSUyMiUzQSUyMmNvZGVfbGluZSUyMiUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2luZCUyMiUzQSUyMnRleHQlMjIlMkMlMjJyYW5nZXMlMjIlM0ElNUIlN0IlMjJraW5kJTIyJTNBJTIycmFuZ2UlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwJTIwJTIwJTIwcHJpdmF0ZSUyME1lc3NhZ2VRdWV1ZUFQSSUyMG1lc3NhZ2VRdWV1ZUFQSSUzQiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMmtpbmQlMjIlM0ElMjJibG9jayUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIydHlwZSUyMiUzQSUyMmNvZGVfbGluZSUyMiUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2luZCUyMiUzQSUyMnRleHQlMjIlMkMlMjJyYW5nZXMlMjIlM0ElNUIlN0IlMjJraW5kJTIyJTNBJTIycmFuZ2UlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwJTIwJTIwJTIwcHJpdmF0ZSUyMHN0YXRpYyUyME1lc3NhZ2VRdWV1ZUFQSSUyMG1lc3NhZ2VRdWV1ZUFQSVN0YXRpYyUzQiUyMCUyRiUyRiUyMHN0YXRpYyUyMHZlcnNpb24lMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJraW5kJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlX2xpbmUlMjIlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtpbmQlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIycmFuZ2VzJTIyJTNBJTVCJTdCJTIya2luZCUyMiUzQSUyMnJhbmdlJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMmtpbmQlMjIlM0ElMjJibG9jayUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIydHlwZSUyMiUzQSUyMmNvZGVfbGluZSUyMiUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2luZCUyMiUzQSUyMnRleHQlMjIlMkMlMjJyYW5nZXMlMjIlM0ElNUIlN0IlMjJraW5kJTIyJTNBJTIycmFuZ2UlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIya2luZCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZV9saW5lJTIyJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJraW5kJTIyJTNBJTIydGV4dCUyMiUyQyUyMnJhbmdlcyUyMiUzQSU1QiU3QiUyMmtpbmQlMjIlM0ElMjJyYW5nZSUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjAlNDBQb3N0Q29uc3RydWN0JTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIya2luZCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZV9saW5lJTIyJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJraW5kJTIyJTNBJTIydGV4dCUyMiUyQyUyMnJhbmdlcyUyMiUzQSU1QiU3QiUyMmtpbmQlMjIlM0ElMjJyYW5nZSUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjBwdWJsaWMlMjB2b2lkJTIwaW5pdCgpJTIwJTdCJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIya2luZCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZV9saW5lJTIyJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJraW5kJTIyJTNBJTIydGV4dCUyMiUyQyUyMnJhbmdlcyUyMiUzQSU1QiU3QiUyMmtpbmQlMjIlM0ElMjJyYW5nZSUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBkZnNPcGVyYXRpb25RdWV1ZVN0YXRpYyUyMCUzRCUyMHRoaXMuZGZzT3BlcmF0aW9uUXVldWUlM0IlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJraW5kJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlX2xpbmUlMjIlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtpbmQlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIycmFuZ2VzJTIyJTNBJTVCJTdCJTIya2luZCUyMiUzQSUyMnJhbmdlJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG1lc3NhZ2VRdWV1ZUFQSVN0YXRpYyUyMCUzRCUyMHRoaXMubWVzc2FnZVF1ZXVlQVBJJTNCJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIya2luZCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIyaXNWb2lkJTIyJTNBZmFsc2UlMkMlMjJ0eXBlJTIyJTNBJTIyY29kZV9saW5lJTIyJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJraW5kJTIyJTNBJTIydGV4dCUyMiUyQyUyMnJhbmdlcyUyMiUzQSU1QiU3QiUyMmtpbmQlMjIlM0ElMjJyYW5nZSUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlMjAlMjAlMjAlN0QlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJraW5kJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlX2xpbmUlMjIlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtpbmQlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIycmFuZ2VzJTIyJTNBJTVCJTdCJTIya2luZCUyMiUzQSUyMnJhbmdlJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMmtpbmQlMjIlM0ElMjJibG9jayUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIydHlwZSUyMiUzQSUyMmNvZGVfbGluZSUyMiUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2luZCUyMiUzQSUyMnRleHQlMjIlMkMlMjJyYW5nZXMlMjIlM0ElNUIlN0IlMjJraW5kJTIyJTNBJTIycmFuZ2UlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwJTIwJTIwJTIwJTQwQWZ0ZXJDbGFzcyUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMmtpbmQlMjIlM0ElMjJibG9jayUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIydHlwZSUyMiUzQSUyMmNvZGVfbGluZSUyMiUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2luZCUyMiUzQSUyMnRleHQlMjIlMkMlMjJyYW5nZXMlMjIlM0ElNUIlN0IlMjJraW5kJTIyJTNBJTIycmFuZ2UlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwJTIwJTIwJTIwcHVibGljJTIwc3RhdGljJTIwdm9pZCUyMGFmdGVyQ2xhc3MoKSUyMCU3QiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMmtpbmQlMjIlM0ElMjJibG9jayUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIydHlwZSUyMiUzQSUyMmNvZGVfbGluZSUyMiUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2luZCUyMiUzQSUyMnRleHQlMjIlMkMlMjJyYW5nZXMlMjIlM0ElNUIlN0IlMjJraW5kJTIyJTNBJTIycmFuZ2UlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwTWVzc2FnZVZPJTIwbWVzc2FnZVZPJTIwJTNEJTIwbWVzc2FnZVF1ZXVlQVBJU3RhdGljLnJlbW92ZURlc3RpbmF0aW9uKGRmc09wZXJhdGlvblF1ZXVlU3RhdGljKSUzQiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMmtpbmQlMjIlM0ElMjJibG9jayUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIydHlwZSUyMiUzQSUyMmNvZGVfbGluZSUyMiUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2luZCUyMiUzQSUyMnRleHQlMjIlMkMlMjJyYW5nZXMlMjIlM0ElNUIlN0IlMjJraW5kJTIyJTNBJTIycmFuZ2UlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwU3lzdGVtLm91dC5wcmludGxuKG1lc3NhZ2VWTyklM0IlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJraW5kJTIyJTNBJTIyYmxvY2slMjIlMkMlMjJpc1ZvaWQlMjIlM0FmYWxzZSUyQyUyMnR5cGUlMjIlM0ElMjJjb2RlX2xpbmUlMjIlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMmtpbmQlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIycmFuZ2VzJTIyJTNBJTVCJTdCJTIya2luZCUyMiUzQSUyMnJhbmdlJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMCUyMCUyMCUyMCU3RCUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMmtpbmQlMjIlM0ElMjJibG9jayUyMiUyQyUyMmlzVm9pZCUyMiUzQWZhbHNlJTJDJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIya2luZCUyMiUzQSUyMnRleHQlMjIlMkMlMjJyYW5nZXMlMjIlM0ElNUIlN0IlMjJraW5kJTIyJTNBJTIycmFuZ2UlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJUU1JTg1JUI2JUU1JUFFJTlFJUU1JUIwJUIxJUU2JTk4JUFGJUU3JTk0JUE4JUU0JUJBJTg2JTQwUG9zdENvbnN0cnVjdCUyMCVFNiU5RCVBNSVFNCVCOCVBQSVFNSU4MSVCNyVFNiVBMiU4MSVFNiU4RCVBMiVFNiU5RiVCMSVFOCU4MCU4QyVFNSVCNyVCMiUyQyUyMCVFNSVBNCU5QSVFNSVBMyVCMCVFNiU5OCU4RSVFNCVCOCVBQSVFOSU5RCU5OSVFNiU4MCU4MSVFNiU4OCU5MCVFNSU5MSU5OCVFNiU4QyU4NyVFNSU5MCU5MSVFOSU5RCU5RSVFOSU5RCU5OSVFNiU4MCU4MSVFNSVBRiVCOSVFOCVCMSVBMSUyQyUyMCVFNCVCOCVBNCVFOCU4MCU4NSVFNSU4NSVCNiVFNSVBRSU5RSVFNiU5OCVBRiVFNCVCOCU4MCVFNCVCOCVBQSVFNSVBRiVCOSVFOCVCMSVBMSUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTVEJTdE" style="box-sizing: border-box; color: #333333; font-family: Roboto, "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: 0.3px; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;">S</span>pring默认不允许对cȝ变量, 也就是静态变量进行注入操? 但是在某些场景比如单元测试的@AfterClass要访问注入对? 而Junit的这个方法必L静态的, 也就产生了悖?<p data-key="33745" style="box-sizing: border-box; margin: 0px 0px 10px; color: #333333; font-family: Roboto, "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: 0.3px; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"><span data-key="33744" style="box-sizing: border-box;"><span data-offset-key="33744-0" style="box-sizing: border-box;">解决思\有两?</span></span></p><ul data-key="33762" style="box-sizing: border-box; margin-top: 0px; margin-bottom: 10px; color: #333333; font-family: Roboto, "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: 0.3px; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"><li style="box-sizing: border-box;"><div data-key="33748" style="box-sizing: border-box;"><div data-key="33747" style="box-sizing: border-box; position: relative;"><span data-key="33746" style="box-sizing: border-box;"><span data-offset-key="33746-0" style="box-sizing: border-box;">思\1: 惛_法对静态变量注? 也就是绕qSpring只能q行非静态变量才能注入依赖的壁垒</span></span></div></div></li><li style="box-sizing: border-box;"><div data-key="33761" style="box-sizing: border-box;"><div data-key="33750" style="box-sizing: border-box; position: relative;"><span data-key="33749" style="box-sizing: border-box;"><span data-offset-key="33749-0" style="box-sizing: border-box;">思\2: 惛_法@AfterClass攚wؓ非静?/span></span></div><ul data-key="33760" style="box-sizing: border-box; margin-top: 0px; margin-bottom: 0px;"><li style="box-sizing: border-box;"><div data-key="33753" style="box-sizing: border-box;"><div data-key="33752" style="box-sizing: border-box; position: relative;"><span data-key="33751" style="box-sizing: border-box;"><span data-offset-key="33751-0" style="box-sizing: border-box;">实现Junit RunListener, 覆盖testRunFinishedҎ, q里d现类似@AfterClass的功? q个Ҏ是非静态的</span></span></div></div></li><li style="box-sizing: border-box;"><div data-key="33756" style="box-sizing: border-box;"><div data-key="33755" style="box-sizing: border-box; position: relative;"><span data-key="33754" style="box-sizing: border-box;"><span data-offset-key="33754-0" style="box-sizing: border-box;">不要用Junit, 改用TestNG, TestNG里的AfterClass是非静态的</span></span></div></div></li><li style="box-sizing: border-box;"><div data-key="33759" style="box-sizing: border-box;"><div data-key="33758" style="box-sizing: border-box; position: relative;"><span data-key="33757" style="box-sizing: border-box;"><span data-offset-key="33757-0" style="box-sizing: border-box;">用Spring的TestExecutionListeners, 实现个Listener, 里面也有个类似非静态的AfterClass的实? 覆盖实现p</span></span></div></div></li></ul></div></li></ul><p data-key="33764" style="box-sizing: border-box; margin: 0px 0px 10px; color: #333333; font-family: Roboto, "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: 0.3px; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"><span data-key="33763" style="box-sizing: border-box;"><span data-offset-key="33763-0" style="box-sizing: border-box;">思\2的几个方法都可以实现, 但是单元试Runner需要用</span></span></p><div style="box-sizing: border-box; position: relative; color: #333333; font-family: Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: 0.3px; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; background-color: #ffffff;"><pre data-key="33767" style="box-sizing: border-box; overflow: auto; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 13px; display: block; padding: 9.5px; margin: 0px 0px 10px; line-height: 1.42857; word-break: break-all; word-wrap: break-word; color: #333333; background-color: #f5f5f5; border: 1px solid #f5f5f5; border-radius: 2px;"><code style="box-sizing: border-box; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: inherit; padding: 0px; color: inherit; background-color: transparent; border-radius: 0px; white-space: pre-wrap;"><div data-key="33766" style="box-sizing: border-box; position: relative;"><span data-key="33765" style="box-sizing: border-box;"><span data-offset-key="33765-0" style="box-sizing: border-box;"><span token="" annotation="" punctuation"="" style="box-sizing: border-box; color: #999999;">@RunWith</span></span><span data-offset-key="33765-1" style="box-sizing: border-box;"><span token="" punctuation="" "="" style="box-sizing: border-box; color: #999999;">(</span></span><span data-offset-key="33765-2" style="box-sizing: border-box;">Theories</span><span data-offset-key="33765-3" style="box-sizing: border-box;"><span token="" punctuation="" "="" style="box-sizing: border-box; color: #999999;">.</span></span><span data-offset-key="33765-4" style="box-sizing: border-box;"><span token="" keyword="" "="" style="box-sizing: border-box; color: #0077aa;">class</span></span><span data-offset-key="33765-5" style="box-sizing: border-box;"><span token="" punctuation="" "="" style="box-sizing: border-box; color: #999999;">)</span></span></span></div></code></pre></div><p data-key="33769" style="box-sizing: border-box; margin: 0px 0px 10px; color: #333333; font-family: Roboto, "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: 0.3px; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"><span data-key="33768" style="box-sizing: border-box;"><span data-offset-key="33768-0" style="box-sizing: border-box;">而且改用TestNG工程大, 只能攑ּ掉这个思\</span></span></p><p data-key="33771" style="box-sizing: border-box; margin: 0px 0px 10px; color: #333333; font-family: Roboto, "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: 0.3px; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"><span data-key="33770" style="box-sizing: border-box;"><span data-offset-key="33770-0" style="box-sizing: border-box;">l箋走思\1, 只能ȝqSpring的依赖注入的static壁垒? 具体代码如下:</span></span></p><div style="box-sizing: border-box; position: relative; color: #333333; font-family: Roboto,"Helvetica Neue",Helvetica,Arial,sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: 0.3px; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; background-color: #ffffff;"><pre data-key="33810" style="box-sizing: border-box; overflow: auto; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 13px; display: block; padding: 9.5px; margin: 0px 0px 10px; line-height: 1.42857; word-break: break-all; word-wrap: break-word; color: #333333; background-color: #f5f5f5; border: 1px solid #f5f5f5; border-radius: 2px;"><code style="box-sizing: border-box; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: inherit; padding: 0px; color: inherit; background-color: transparent; border-radius: 0px; white-space: pre-wrap;"><div data-key="33773" style="box-sizing: border-box; position: relative;"><span data-key="33772" style="box-sizing: border-box;"> <span data-offset-key="33772-1" style="box-sizing: border-box;"><span token="" annotation="" punctuation"="" style="box-sizing: border-box; color: #999999;">@Autowired</span></span></span></div><div data-key="33775" style="box-sizing: border-box; position: relative;"><span data-key="33774" style="box-sizing: border-box;"> <span data-offset-key="33774-1" style="box-sizing: border-box;"><span token="" keyword="" "="" style="box-sizing: border-box; color: #0077aa;">private</span></span><span data-offset-key="33774-2" style="box-sizing: border-box;"> Destination dfsOperationQueue</span><span data-offset-key="33774-3" style="box-sizing: border-box;"><span token="" punctuation="" "="" style="box-sizing: border-box; color: #999999;">;</span></span></span></div><div data-key="33777" style="box-sizing: border-box; position: relative;"><span data-key="33776" style="box-sizing: border-box;"> <span data-offset-key="33776-1" style="box-sizing: border-box;"><span token="" keyword="" "="" style="box-sizing: border-box; color: #0077aa;">private</span></span> <span data-offset-key="33776-3" style="box-sizing: border-box;"><span token="" keyword="" "="" style="box-sizing: border-box; color: #0077aa;">static</span></span><span data-offset-key="33776-4" style="box-sizing: border-box;"> Destination dfsOperationQueueStatic</span><span data-offset-key="33776-5" style="box-sizing: border-box;"><span token="" punctuation="" "="" style="box-sizing: border-box; color: #999999;">;</span></span> <span data-offset-key="33776-7" style="box-sizing: border-box;"><span token="" comment="" "="" style="box-sizing: border-box; color: #708090;">// static version</span></span></span></div><div data-key="33779" style="box-sizing: border-box; position: relative;"><span data-key="33778" style="box-sizing: border-box;"> <span data-offset-key="33778-1" style="box-sizing: border-box;"><span token="" annotation="" punctuation"="" style="box-sizing: border-box; color: #999999;">@Autowired</span></span></span></div><div data-key="33781" style="box-sizing: border-box; position: relative;"><span data-key="33780" style="box-sizing: border-box;"> <span data-offset-key="33780-1" style="box-sizing: border-box;"><span token="" keyword="" "="" style="box-sizing: border-box; color: #0077aa;">private</span></span><span data-offset-key="33780-2" style="box-sizing: border-box;"> MessageQueueAPI messageQueueAPI</span><span data-offset-key="33780-3" style="box-sizing: border-box;"><span token="" punctuation="" "="" style="box-sizing: border-box; color: #999999;">;</span></span></span></div><div data-key="33783" style="box-sizing: border-box; position: relative;"><span data-key="33782" style="box-sizing: border-box;"> <span data-offset-key="33782-1" style="box-sizing: border-box;"><span token="" keyword="" "="" style="box-sizing: border-box; color: #0077aa;">private</span></span> <span data-offset-key="33782-3" style="box-sizing: border-box;"><span token="" keyword="" "="" style="box-sizing: border-box; color: #0077aa;">static</span></span><span data-offset-key="33782-4" style="box-sizing: border-box;"> MessageQueueAPI messageQueueAPIStatic</span><span data-offset-key="33782-5" style="box-sizing: border-box;"><span token="" punctuation="" "="" style="box-sizing: border-box; color: #999999;">;</span></span> <span data-offset-key="33782-7" style="box-sizing: border-box;"><span token="" comment="" "="" style="box-sizing: border-box; color: #708090;">// static version</span></span></span></div><div data-key="33785" style="box-sizing: border-box; position: relative;"><span data-key="33784" style="box-sizing: border-box;"><span data-offset-key="33784-0" style="box-sizing: border-box;"><br style="box-sizing: border-box;" /></span></span></div><div data-key="33787" style="box-sizing: border-box; position: relative;"><span data-key="33786" style="box-sizing: border-box;"><span data-offset-key="33786-0" style="box-sizing: border-box;"><br style="box-sizing: border-box;" /></span></span></div><div data-key="33789" style="box-sizing: border-box; position: relative;"><span data-key="33788" style="box-sizing: border-box;"> <span data-offset-key="33788-1" style="box-sizing: border-box;"><span token="" annotation="" punctuation"="" style="box-sizing: border-box; color: #999999;">@PostConstruct</span></span></span></div><div data-key="33791" style="box-sizing: border-box; position: relative;"><span data-key="33790" style="box-sizing: border-box;"> <span data-offset-key="33790-1" style="box-sizing: border-box;"><span token="" keyword="" "="" style="box-sizing: border-box; color: #0077aa;">public</span></span> <span data-offset-key="33790-3" style="box-sizing: border-box;"><span token="" keyword="" "="" style="box-sizing: border-box; color: #0077aa;">void</span></span> <span data-offset-key="33790-5" style="box-sizing: border-box;"><span token="" function="" "="" style="box-sizing: border-box; color: #dd4a68;">init</span></span><span data-offset-key="33790-6" style="box-sizing: border-box;"><span token="" punctuation="" "="" style="box-sizing: border-box; color: #999999;">()</span></span> <span data-offset-key="33790-8" style="box-sizing: border-box;"><span token="" punctuation="" "="" style="box-sizing: border-box; color: #999999;">{</span></span></span></div><div data-key="33793" style="box-sizing: border-box; position: relative;"><span data-key="33792" style="box-sizing: border-box;"><span data-offset-key="33792-0" style="box-sizing: border-box;"> dfsOperationQueueStatic </span><span data-offset-key="33792-1" style="box-sizing: border-box;"><span token="" operator="" "="" style="box-sizing: border-box; color: #a67f59; background: rgba(255, 255, 255, 0.498039);">=</span></span> <span data-offset-key="33792-3" style="box-sizing: border-box;"><span token="" keyword="" "="" style="box-sizing: border-box; color: #0077aa;">this</span></span><span data-offset-key="33792-4" style="box-sizing: border-box;"><span token="" punctuation="" "="" style="box-sizing: border-box; color: #999999;">.</span></span><span data-offset-key="33792-5" style="box-sizing: border-box;">dfsOperationQueue</span><span data-offset-key="33792-6" style="box-sizing: border-box;"><span token="" punctuation="" "="" style="box-sizing: border-box; color: #999999;">;</span></span></span></div><div data-key="33795" style="box-sizing: border-box; position: relative;"><span data-key="33794" style="box-sizing: border-box;"><span data-offset-key="33794-0" style="box-sizing: border-box;"> messageQueueAPIStatic </span><span data-offset-key="33794-1" style="box-sizing: border-box;"><span token="" operator="" "="" style="box-sizing: border-box; color: #a67f59; background: rgba(255, 255, 255, 0.498039);">=</span></span> <span data-offset-key="33794-3" style="box-sizing: border-box;"><span token="" keyword="" "="" style="box-sizing: border-box; color: #0077aa;">this</span></span><span data-offset-key="33794-4" style="box-sizing: border-box;"><span token="" punctuation="" "="" style="box-sizing: border-box; color: #999999;">.</span></span><span data-offset-key="33794-5" style="box-sizing: border-box;">messageQueueAPI</span><span data-offset-key="33794-6" style="box-sizing: border-box;"><span token="" punctuation="" "="" style="box-sizing: border-box; color: #999999;">;</span></span></span></div><div data-key="33797" style="box-sizing: border-box; position: relative;"><span data-key="33796" style="box-sizing: border-box;"> <span data-offset-key="33796-1" style="box-sizing: border-box;"><span token="" punctuation="" "="" style="box-sizing: border-box; color: #999999;">}</span></span></span></div><div data-key="33799" style="box-sizing: border-box; position: relative;"><span data-key="33798" style="box-sizing: border-box;"><span data-offset-key="33798-0" style="box-sizing: border-box;"><br style="box-sizing: border-box;" /></span></span></div><div data-key="33801" style="box-sizing: border-box; position: relative;"><span data-key="33800" style="box-sizing: border-box;"> <span data-offset-key="33800-1" style="box-sizing: border-box;"><span token="" annotation="" punctuation"="" style="box-sizing: border-box; color: #999999;">@AfterClass</span></span></span></div><div data-key="33803" style="box-sizing: border-box; position: relative;"><span data-key="33802" style="box-sizing: border-box;"> <span data-offset-key="33802-1" style="box-sizing: border-box;"><span token="" keyword="" "="" style="box-sizing: border-box; color: #0077aa;">public</span></span> <span data-offset-key="33802-3" style="box-sizing: border-box;"><span token="" keyword="" "="" style="box-sizing: border-box; color: #0077aa;">static</span></span> <span data-offset-key="33802-5" style="box-sizing: border-box;"><span token="" keyword="" "="" style="box-sizing: border-box; color: #0077aa;">void</span></span> <span data-offset-key="33802-7" style="box-sizing: border-box;"><span token="" function="" "="" style="box-sizing: border-box; color: #dd4a68;">afterClass</span></span><span data-offset-key="33802-8" style="box-sizing: border-box;"><span token="" punctuation="" "="" style="box-sizing: border-box; color: #999999;">()</span></span> <span data-offset-key="33802-10" style="box-sizing: border-box;"><span token="" punctuation="" "="" style="box-sizing: border-box; color: #999999;">{</span></span></span></div><div data-key="33805" style="box-sizing: border-box; position: relative;"><span data-key="33804" style="box-sizing: border-box;"><span data-offset-key="33804-0" style="box-sizing: border-box;"> MessageVO messageVO </span><span data-offset-key="33804-1" style="box-sizing: border-box;"><span token="" operator="" "="" style="box-sizing: border-box; color: #a67f59; background: rgba(255, 255, 255, 0.498039);">=</span></span><span data-offset-key="33804-2" style="box-sizing: border-box;"> messageQueueAPIStatic</span><span data-offset-key="33804-3" style="box-sizing: border-box;"><span token="" punctuation="" "="" style="box-sizing: border-box; color: #999999;">.</span></span><span data-offset-key="33804-4" style="box-sizing: border-box;"><span token="" function="" "="" style="box-sizing: border-box; color: #dd4a68;">removeDestination</span></span><span data-offset-key="33804-5" style="box-sizing: border-box;"><span token="" punctuation="" "="" style="box-sizing: border-box; color: #999999;">(</span></span><span data-offset-key="33804-6" style="box-sizing: border-box;">dfsOperationQueueStatic</span><span data-offset-key="33804-7" style="box-sizing: border-box;"><span token="" punctuation="" "="" style="box-sizing: border-box; color: #999999;">);</span></span></span></div><div data-key="33807" style="box-sizing: border-box; position: relative;"><span data-key="33806" style="box-sizing: border-box;"><span data-offset-key="33806-0" style="box-sizing: border-box;"> System</span><span data-offset-key="33806-1" style="box-sizing: border-box;"><span token="" punctuation="" "="" style="box-sizing: border-box; color: #999999;">.</span></span><span data-offset-key="33806-2" style="box-sizing: border-box;">out</span><span data-offset-key="33806-3" style="box-sizing: border-box;"><span token="" punctuation="" "="" style="box-sizing: border-box; color: #999999;">.</span></span><span data-offset-key="33806-4" style="box-sizing: border-box;"><span token="" function="" "="" style="box-sizing: border-box; color: #dd4a68;">println</span></span><span data-offset-key="33806-5" style="box-sizing: border-box;"><span token="" punctuation="" "="" style="box-sizing: border-box; color: #999999;">(</span></span><span data-offset-key="33806-6" style="box-sizing: border-box;">messageVO</span><span data-offset-key="33806-7" style="box-sizing: border-box;"><span token="" punctuation="" "="" style="box-sizing: border-box; color: #999999;">);</span></span></span></div><div data-key="33809" style="box-sizing: border-box; position: relative;"><span data-key="33808" style="box-sizing: border-box;"> <span data-offset-key="33808-1" style="box-sizing: border-box;"><span token="" punctuation="" "="" style="box-sizing: border-box; color: #999999;">}</span></span></span></div></code></pre></div><p data-key="33812" style="box-sizing: border-box; margin: 0px 0px 10px; color: #333333; font-family: Roboto, "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: 0.3px; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: #ffffff;"><span data-key="33811" style="box-sizing: border-box;"><span data-offset-key="33811-0" style="box-sizing: border-box;">其实是用了@PostConstruct 来个h换柱而已, 多声明个静态成员指向非静态对? 两者其实是一个对?/span></span></p></div><img src ="http://www.tkk7.com/miaoyachun/aggbug/432461.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/miaoyachun/" target="_blank">Milo的v?/a> 2017-04-15 10:32 <a href="http://www.tkk7.com/miaoyachun/archive/2017/04/15/432461.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>通过rest api理activemqhttp://www.tkk7.com/miaoyachun/archive/2016/10/22/431914.htmlMilo的v?/dc:creator>Milo的v?/author>Sat, 22 Oct 2016 09:31:00 GMThttp://www.tkk7.com/miaoyachun/archive/2016/10/22/431914.htmlhttp://www.tkk7.com/miaoyachun/comments/431914.htmlhttp://www.tkk7.com/miaoyachun/archive/2016/10/22/431914.html#Feedback0http://www.tkk7.com/miaoyachun/comments/commentRss/431914.htmlhttp://www.tkk7.com/miaoyachun/services/trackbacks/431914.html

知道activemq现在已经支持了rest api, 但是官方对这部分的介l一W带q?(http://activemq.apache.org/rest.html),


通过google居然也没搜到一些有用的, 比如像删除一个destination, 都是问的?然后没下? 于是׃一些心思研I了一?


首先通过rest api获取当前版本所有已支持的协?/p>

    http://172.30.43.206:8161/api/jolokia/list


然后Ҏjson输出关于removeTopic, removeQueue的mbean实现通过rest api删除destination的方? 注意到用GETh而不是POST,不然会报?(官网的例子里用的wgetl的灉|, 开始用了POST老报?


import org.apache.activemq.command.ActiveMQQueue;
import org.apache.activemq.command.ActiveMQTopic;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.DefaultHttpClient;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;

import javax.jms.Destination;
import javax.jms.JMSException;
import java.util.Arrays;


public class MessageQueueAdmin {
    
private static final RestTemplate restTemplate = getRestTemplate("admin""admin");

    
private static String brokerHost = "172.30.43.206";
    
private static String adminConsolePort = "8161";
    
private static String protocol = "http";

    
public static void removeDestination(Destination destination) throws JMSException {
        String destName, destType;
        
if (destination instanceof ActiveMQQueue) {
            destName 
= ((ActiveMQQueue) destination).getQueueName();
            destType 
= "Queue";
        } 
else {
            destName 
= ((ActiveMQTopic) destination).getTopicName();
            destType 
= "Topic";
        }

        
// build urls
        String url = String.format("%s://%s:%s/api/jolokia/exec/org.apache.activemq:" +
                
"brokerName=localhost,type=Broker/remove%s/%s", protocol, brokerHost, adminConsolePort, destType, destName);
        System.out.println(url);
        
// do operation
        HttpHeaders headers = new HttpHeaders();
        headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
        HttpEntity
<String> entity = new HttpEntity<String>("parameters", headers);
        ResponseEntity response 
= restTemplate.exchange(url, HttpMethod.GET, entity, String.class);
        System.out.println(response.getBody());
    }

    
public static void main(String[] args) throws JMSException {
        ActiveMQTopic topic 
= new ActiveMQTopic("test-activemq-topic");
        removeDestination(topic);
    }


    
private static RestTemplate getRestTemplate(String user, String password) {
        DefaultHttpClient httpClient 
= new DefaultHttpClient();
        BasicCredentialsProvider credentialsProvider 
= new BasicCredentialsProvider();
        credentialsProvider.setCredentials(AuthScope.ANY, 
new UsernamePasswordCredentials(user, password));
        httpClient.setCredentialsProvider(credentialsProvider);
        ClientHttpRequestFactory rf 
= new HttpComponentsClientHttpRequestFactory(httpClient);

        
return new RestTemplate(rf);
    }
}

其他的请?应该都是cMjolokia的exec get request的格?


https://jolokia.org/reference/html/protocol.html#exec


<base url>/exec/<mbean name>/<operation name>/<arg1>/<arg2>/.


]]>
JmsTemplate CLIENT_ACKNOWLEDGE 模式下receive消息的问?/title><link>http://www.tkk7.com/miaoyachun/archive/2016/10/12/431885.html</link><dc:creator>Milo的v?/dc:creator><author>Milo的v?/author><pubDate>Wed, 12 Oct 2016 08:32:00 GMT</pubDate><guid>http://www.tkk7.com/miaoyachun/archive/2016/10/12/431885.html</guid><wfw:comment>http://www.tkk7.com/miaoyachun/comments/431885.html</wfw:comment><comments>http://www.tkk7.com/miaoyachun/archive/2016/10/12/431885.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/miaoyachun/comments/commentRss/431885.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/miaoyachun/services/trackbacks/431885.html</trackback:ping><description><![CDATA[用Spring JMS 的JmsTemplate从消息队列消Ҏ息时发现Q用了CLIENT_ACKNOWLEDGE模式Q消息返回后L自动被ackQ也是被broker "Dequeued"<br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">    </span><span style="color: #0000FF; ">protected</span><span style="color: #000000; "> Message doReceive(Session session, MessageConsumer consumer) </span><span style="color: #0000FF; ">throws</span><span style="color: #000000; "> JMSException {<br />        </span><span style="color: #0000FF; ">try</span><span style="color: #000000; "> {<br />            </span><span style="color: #008000; ">//</span><span style="color: #008000; "> Use transaction timeout (if available).</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">            </span><span style="color: #0000FF; ">long</span><span style="color: #000000; "> timeout </span><span style="color: #000000; ">=</span><span style="color: #000000; "> getReceiveTimeout();<br />            JmsResourceHolder resourceHolder </span><span style="color: #000000; ">=</span><span style="color: #000000; "><br />                    (JmsResourceHolder) TransactionSynchronizationManager.getResource(getConnectionFactory());<br />            </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (resourceHolder </span><span style="color: #000000; ">!=</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">null</span><span style="color: #000000; "> </span><span style="color: #000000; ">&&</span><span style="color: #000000; "> resourceHolder.hasTimeout()) {<br />                timeout </span><span style="color: #000000; ">=</span><span style="color: #000000; "> Math.min(timeout, resourceHolder.getTimeToLiveInMillis());<br />            }<br />            Message message </span><span style="color: #000000; ">=</span><span style="color: #000000; "> doReceive(consumer, timeout);<br />            </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (session.getTransacted()) {<br />                </span><span style="color: #008000; ">//</span><span style="color: #008000; "> Commit necessary - but avoid commit call within a JTA transaction.</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">                </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (isSessionLocallyTransacted(session)) {<br />                    </span><span style="color: #008000; ">//</span><span style="color: #008000; "> Transacted session created by this template -> commit.</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">                    JmsUtils.commitIfNecessary(session);<br />                }<br />            }<br />            </span><span style="color: #0000FF; ">else</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (isClientAcknowledge(session)) {<br />                </span><span style="color: #008000; ">//</span><span style="color: #008000; "> Manually acknowledge message, if any.</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">                </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (message </span><span style="color: #000000; ">!=</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">) {<br />                    message.acknowledge();<br />                }<br />            }<br />            </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> message;<br />        }<br />        </span><span style="color: #0000FF; ">finally</span><span style="color: #000000; "> {<br />            JmsUtils.closeMessageConsumer(consumer);<br />        }<br />    }<br /></span></div><br />但是使用异步listener ׃会出现这个情况,搜了下googleQ发现果然存在这个问?br /><br /><div>     https://jira.spring.io/browse/SPR-12995<br />     https://jira.spring.io/browse/SPR-13255<br />     http://louisling.iteye.com/blog/241073</div><br />同步方式拉取消息Q暂时没扑ֈ好的装Q只能暂时用q。或者尽量用listener, q个问题暂时标记下,或者谁有更好的解决Ҏ可以comment?img src ="http://www.tkk7.com/miaoyachun/aggbug/431885.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/miaoyachun/" target="_blank">Milo的v?/a> 2016-10-12 16:32 <a href="http://www.tkk7.com/miaoyachun/archive/2016/10/12/431885.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>树莓z?B完美匚wDELL P2014H的配|?/title><link>http://www.tkk7.com/miaoyachun/archive/2016/06/15/430904.html</link><dc:creator>Milo的v?/dc:creator><author>Milo的v?/author><pubDate>Wed, 15 Jun 2016 01:32:00 GMT</pubDate><guid>http://www.tkk7.com/miaoyachun/archive/2016/06/15/430904.html</guid><wfw:comment>http://www.tkk7.com/miaoyachun/comments/430904.html</wfw:comment><comments>http://www.tkk7.com/miaoyachun/archive/2016/06/15/430904.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/miaoyachun/comments/commentRss/430904.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/miaoyachun/services/trackbacks/430904.html</trackback:ping><description><![CDATA[<div>默认的配|有时候点不亮昄器,且分辨率很低Q通过tvservice工具不断调试Q发C面的参数可以完美匚w?br />修改 /boot/config.txt的下列参?/div><br /><div> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #000000; ">disable_overscan</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br />hdmi_force_hotplug</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br />hdmi_group</span><span style="color: #000000; ">=</span><span style="color: #000000; ">1</span><span style="color: #000000; "><br />hdmi_mode</span><span style="color: #000000; ">=</span><span style="color: #000000; ">16</span><span style="color: #000000; "><br />hdmi_drive</span><span style="color: #000000; ">=</span><span style="color: #000000; ">2</span><span style="color: #000000; "><br />config_hdmi_boost</span><span style="color: #000000; ">=</span><span style="color: #000000; ">4</span><span style="color: #000000; "><br />dtparam</span><span style="color: #000000; ">=</span><span style="color: #000000; ">audio</span><span style="color: #000000; ">=</span><span style="color: #000000; ">on<br /></span></div> </div><br /><img src ="http://www.tkk7.com/miaoyachun/aggbug/430904.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/miaoyachun/" target="_blank">Milo的v?/a> 2016-06-15 09:32 <a href="http://www.tkk7.com/miaoyachun/archive/2016/06/15/430904.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring中classpath与classpath*的区?/title><link>http://www.tkk7.com/miaoyachun/archive/2016/05/26/430666.html</link><dc:creator>Milo的v?/dc:creator><author>Milo的v?/author><pubDate>Thu, 26 May 2016 06:14:00 GMT</pubDate><guid>http://www.tkk7.com/miaoyachun/archive/2016/05/26/430666.html</guid><wfw:comment>http://www.tkk7.com/miaoyachun/comments/430666.html</wfw:comment><comments>http://www.tkk7.com/miaoyachun/archive/2016/05/26/430666.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/miaoyachun/comments/commentRss/430666.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/miaoyachun/services/trackbacks/430666.html</trackback:ping><description><![CDATA[<div><div>http://stackoverflow.com/questions/3294423/spring-classpath-prefix-difference</div><br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><span style="color: #000000; "><br />   <br /><br />SIMPLE DEFINITION<br /><br />The classpath*:conf/appContext.xml simply means that all appContext.xml files under conf folders in all your jars on the classpath will be picked up and joined into one big application context.<br /><br />In contrast</span><span style="color: #000000; ">,</span><span style="color: #000000; "> classpath:conf/appContext.xml will load only one such file<img src="http://www.tkk7.com/Images/dot.gif" alt="" /> the first one found on your classpath.<br /></span></div> </div><br /><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><div><pre style="background-color:#ffffff;color:#000000;font-family:'宋体';font-size:9.8pt;"><span style="background-color:#efefef;"><</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">bean </span><span style="color:#0000ff;background-color:#efefef;font-weight:bold;">id</span><span style="color:#008000;background-color:#efefef;font-weight:bold;">="propertyConfigurer"<br /></span> <span style="color:#0000ff;background-color:#efefef;font-weight:bold;">class</span><span style="color:#008000;background-color:#efefef;font-weight:bold;">="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"</span><span style="background-color:#efefef;">></span><br /> <span style="background-color:#efefef;"><</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">property </span><span style="color:#0000ff;background-color:#efefef;font-weight:bold;">name</span><span style="color:#008000;background-color:#efefef;font-weight:bold;">="locations"</span><span style="background-color:#efefef;">></span><br /> <span style="background-color:#efefef;"><</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">list</span><span style="background-color:#efefef;">></span><br /> <span style="background-color:#efefef;"><</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">value</span><span style="background-color:#efefef;">></span>classpath:*.properties<span style="background-color:#efefef;"></</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">value</span><span style="background-color:#efefef;">></span><br /> <span style="background-color:#efefef;"><</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">value</span><span style="background-color:#efefef;">></span>classpath*:*.properties<span style="background-color:#efefef;"></</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">value</span><span style="background-color:#efefef;">></span><br /> <span style="background-color:#efefef;"></</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">list</span><span style="background-color:#efefef;">></span><br /> <span style="background-color:#efefef;"></</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">property</span><span style="background-color:#efefef;">></span><br /><span style="background-color:#efefef;"></</span><span style="color:#000080;background-color:#efefef;font-weight:bold;">bean</span><span style="background-color:#efefef;">></span></pre></div></div><br /><img src ="http://www.tkk7.com/miaoyachun/aggbug/430666.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/miaoyachun/" target="_blank">Milo的v?/a> 2016-05-26 14:14 <a href="http://www.tkk7.com/miaoyachun/archive/2016/05/26/430666.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>When launched from .exe IDEA looks for Java in a following orderhttp://www.tkk7.com/miaoyachun/archive/2016/05/16/430516.htmlMilo的v?/dc:creator>Milo的v?/author>Mon, 16 May 2016 00:49:00 GMThttp://www.tkk7.com/miaoyachun/archive/2016/05/16/430516.htmlhttp://www.tkk7.com/miaoyachun/comments/430516.htmlhttp://www.tkk7.com/miaoyachun/archive/2016/05/16/430516.html#Feedback0http://www.tkk7.com/miaoyachun/comments/commentRss/430516.htmlhttp://www.tkk7.com/miaoyachun/services/trackbacks/430516.html
  1. IDEA_JDK (or IDEA_JDK_64) environment variable
  2. jre/ (or jre64/) directory in IDEA home
  3. registry
  4. JDK_HOME environment variable
  5. JAVA_HOME environment variable


]]>
java修改stdout的历史输?/title><link>http://www.tkk7.com/miaoyachun/archive/2016/04/21/430179.html</link><dc:creator>Milo的v?/dc:creator><author>Milo的v?/author><pubDate>Thu, 21 Apr 2016 09:06:00 GMT</pubDate><guid>http://www.tkk7.com/miaoyachun/archive/2016/04/21/430179.html</guid><wfw:comment>http://www.tkk7.com/miaoyachun/comments/430179.html</wfw:comment><comments>http://www.tkk7.com/miaoyachun/archive/2016/04/21/430179.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/miaoyachun/comments/commentRss/430179.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/miaoyachun/services/trackbacks/430179.html</trackback:ping><description><![CDATA[java里如何修改console的历史输Z息呢Q如果是当前行的修改可以单想?\r"的方案,但是如果要修改上一行呢? google了下原来q是有方法的Q需要用到ansi的control sequences<br /><a title="ANSI code" >ANSI code</a><br /><br />用java写了个简单的例子Q例子就是把曄的output修改为其他字W串q恢复之后的打印Q代码里加了sleepQ主要方便理解各U控制序列的含义<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">        </span><span style="color: #008000; ">//</span><span style="color: #008000; ">print some test messages</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">        System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">1</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />        Thread.sleep(</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">);<br />        System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">22</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />        Thread.sleep(</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">);<br />        System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">333</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />        Thread.sleep(</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">);<br />        System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">4444</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />        Thread.sleep(</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">);<br /><br />        </span><span style="color: #008000; ">/**</span><span style="color: #008000; "><br />         * modify "333" to "-"<br />         </span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />        </span><span style="color: #008000; ">//</span><span style="color: #008000; "> Move up two lines</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">        </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> count </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">2</span><span style="color: #000000; ">;<br />        System.out.print(String.format(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">\033[%dA</span><span style="color: #000000; ">"</span><span style="color: #000000; ">, count));<br />        Thread.sleep(</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">);<br />        </span><span style="color: #008000; ">//</span><span style="color: #008000; "> Erase current line content</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">        System.out.print(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">\033[2K</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />        Thread.sleep(</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">);<br />        </span><span style="color: #008000; ">//</span><span style="color: #008000; "> update with new content</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">        System.out.print(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">-</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />        Thread.sleep(</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">);<br />        </span><span style="color: #008000; ">//</span><span style="color: #008000; "> Move down two lines</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">        System.out.print(String.format(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">\033[%dB</span><span style="color: #000000; ">"</span><span style="color: #000000; ">, count));<br />        Thread.sleep(</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">);<br />        </span><span style="color: #008000; ">//</span><span style="color: #008000; "> Move cursor to left beginning</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">        System.out.print(String.format(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">\033[D</span><span style="color: #000000; ">"</span><span style="color: #000000; ">, count));<br />        </span><span style="color: #008000; ">//</span><span style="color: #008000; "> continue print others</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">        Thread.sleep(</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">);<br />        System.out.println(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">55555</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />        Thread.sleep(</span><span style="color: #000000; ">1000</span><span style="color: #000000; ">);</span></div><img src ="http://www.tkk7.com/miaoyachun/aggbug/430179.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/miaoyachun/" target="_blank">Milo的v?/a> 2016-04-21 17:06 <a href="http://www.tkk7.com/miaoyachun/archive/2016/04/21/430179.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>zookeeper学习http://www.tkk7.com/miaoyachun/archive/2016/03/31/429913.htmlMilo的v?/dc:creator>Milo的v?/author>Thu, 31 Mar 2016 06:06:00 GMThttp://www.tkk7.com/miaoyachun/archive/2016/03/31/429913.htmlhttp://www.tkk7.com/miaoyachun/comments/429913.htmlhttp://www.tkk7.com/miaoyachun/archive/2016/03/31/429913.html#Feedback0http://www.tkk7.com/miaoyachun/comments/commentRss/429913.htmlhttp://www.tkk7.com/miaoyachun/services/trackbacks/429913.html2. 详细介绍 http://blog.csdn.net/xhh198781/article/details/10949697

]]>
Spring boot 开启reponse压羃以及部分参数讄http://www.tkk7.com/miaoyachun/archive/2016/03/29/429861.htmlMilo的v?/dc:creator>Milo的v?/author>Tue, 29 Mar 2016 03:50:00 GMThttp://www.tkk7.com/miaoyachun/archive/2016/03/29/429861.htmlhttp://www.tkk7.com/miaoyachun/comments/429861.htmlhttp://www.tkk7.com/miaoyachun/archive/2016/03/29/429861.html#Feedback0http://www.tkk7.com/miaoyachun/comments/commentRss/429861.htmlhttp://www.tkk7.com/miaoyachun/services/trackbacks/429861.html
server.compression.enabled=true 
server.compression.mime-types=application/json,application/xml,text/html,text/xml,text/plain
server.compression.min-response-size=4096
W一个参数打开压羃开养IW二个参数添加json reponseQ尤其是为rest apiQ?W三个参数是Ҏreponse的大设|启用压~的最?默认?KQ自己根据实际情况调?

参?div>http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#how-to-enable-http-response-compression

]]>
վ֩ģ壺 ޹Ʒһߵ| 97ѹۿƵ߹ۿ| Ʒɫ99þþƷ| Ƶ߹ۿѲӰԺ| ˬִ̼վֱ | ߹ۿƵվɫ| 91ֻƷѹۿ| վ| þþƷAVɫ| ߹ۿһ| ߹ۿһëƬ| ޹ҹƷƬ| һ˿wwwƵ | crmϵͳz | MM1313޹Ʒ| ձ߿Ƭ˳Ƶ1000| ӰƵѹۿ| ƷպAVһ | avŮӰ| ձŷɫƵ߲| ѹۿaƬ| AVҹ丣㽶149| AVһ | ɫ͵͵Ůùۿŷ| ˿wwwƵ| ޳AVƬ߹ۿ| Ůѹۿվh| ƷAVһ| ŮƵվ| ഺɫУ԰С˵| wwwƵ| ޾ƷƵ| ޹ҹĻƷվ | ޳av߹ۿվ| ݽվƵ| ޹Ʒþþþ| йһػƵƬ | ۺϾƷһ| ɫóվ߹ۿ | ޹ƷۺϾþþ| ѹۿëƬ|