11.SpringMVC的PathVariable。
@PathVariable("id") Integer id;
@RequestParam Integer id;


使用了“路径变量”,同时要求它不为空,就使用了
@RequestParam @PathVariable("id") Integer id;
访问 /1001 ,结果提示id总是找不到。


使用了@PathVariable,不应该再同时使用@RequestParam。


12.阿里云的OSS删除图片。


删除之前,Chrome浏览器能正常下载图片。删除之后,Chrome还可以继续下载。


去阿里云控制台确认,已经删除了。


用QQ浏览器打开图片,被拒绝。


这说明图片已经删除成功了。


Chrome可以继续下载,很可能是“浏览器缓存”。


13.JSTL的if表达式。
sendId在Java中是String类型,数据库中是varchar。
这种写法,在Jetty下运行从来没有报错,在Tomcat下,突然就报错了,之前没问题。
<td><c:if test="${message.sendId==-1}">系统</c:if>


严谨的写法,字符串比较用''括起来。
<td><c:if test="${message.sendId=='-1'}">系统</c:if><c:if test="${message.sendId!='-1'}">${message.sendMember.mobile}</c:if></td>


14.maven如何将项目引用的所有jar包复制到lib文件夹内。
Maven的非web项目在执行时需要引用很多jar包,这时候通常的做法是将这些jar包统一放到lib目录中,maven的dependency插件可以帮我们做这件事情。


我们需要在pom文件的build节点的plugins节点内添加一个plugin,plugin内容如下:

<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-jar-plugin</artifactId>
				<configuration>
					<archive>
						<manifest>
							<mainClass>MainClass</mainClass>
							<addClasspath>true</addClasspath>
							<classpathPrefix>lib/</classpathPrefix>
						</manifest>
						<manifestEntries>
							<Class-Path>.</Class-Path>
						</manifestEntries>
					</archive>
				</configuration>
			</plugin>
			<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>prepare-package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>E:\MavenRepository\0.0.1-SNAPSHOT\lib</outputDirectory>
                        <overWriteReleases>false</overWriteReleases>
                        <overWriteSnapshots>false</overWriteSnapshots>
                        <overWriteIfNewer>true</overWriteIfNewer>
                    </configuration>
                </execution>
            </executions>
        </plugin>
	</build>





参考资料:http://outofmemory.cn/maven/FAQ/how-to-copy-dependency-to-lib-folder



15.Redis的几个问题。


Redis缓存对象,需要序列化。


public class OssItem implements Serializable。

如果没有实现Serializable,会报错。






public class OssItem extends BaseOssItem implements Serializable。

放到缓存前,list集合OssItem元素的属性都有值,属性都是从父类BaseOssItem继承来的。


但是,当从Redis取出的时候,list集合有值,但每个元素的属性都是空的。




后来,把父类BaseOssItem的属性,都手动定义放到OssItem下就可以了。


public class OssItem  implements Serializable{

   private String name;

   ...

}


16.Redis缓存集合类型。


2个项目,都使用了SpringDataRedis,但是配置方式不一样。


org.springframework.data.redis.core.StringRedisTemplate




其中1个,可以直接存放list集合。而另外一个却会报错,只能把集合序列化,再存储。


public void add(String key,List<ResourceMatchContent> list){
		String json = JSONObject.toJSONString(list);
		logger.info("save ResourceMatch ,json=" + json+",key="+key);
		defaultCache.add(key, json, CATCHE_TIME);
	}



序列化方式有很多种,这个地方用的是“json序列化”。




17.Nginx配置负债均衡。


之前,只亲自配置过动静分离,域名映射。


最近,看了下项目中和网上的负载均衡配置,挺简单的。



upstream jieli.com {
         server 127.0.0.1:8080;
          #server 192.168.8.203:8080;
    }
	server{
          listen 80;
          server_name erp.zh-jieli.com;
          location / {
              index index; #默认主页为 /index
              #proxy_pass http://jieli;
          }
	}



 


18.Solr数据不同步。


  Solr4中,用了SolrCloud分布式服务,出现了数据不一致的情况,原因未知。


  改成了Solr5,没有这个问题。




19.java.lang.NullPointerException错误


spring运行的时候出现了:


java.lang.NullPointerException

    at org.springframework.core.SerializableTypeWrapper$TypeProxyInvocationHandler.invoke(SerializableTypeWrapper.java:239)

    at org.springframework.core.$Proxy5.hashCode(Unknown Source)

问题原因:spring的jar包冲突




自己的项目,dubbo中有个spring2.5,又配置了spring4.x,调整下顺序就好了。


参考资料:http://zhidao.baidu.com/link?url=KyfXakvRF7skwyJ8MLU_8x3qNThYbx2r478bi1ynQ1xrni6cWyki7PeQ_LkR3eJldPvRd_EbFsDrN3dGCbbP-RkjE5m5tLd00r5vaNTp_BO




20.SpringJUnit4ClassRunner.runLeaf方法找不到。

java.lang.NoSuchMethodError: org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runLeaf(Lorg/junit/runners/model/Statement;Lorg/junit/runner/Description;Lorg/junit/runner/notification/RunNotifier;)V

 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:217)

 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:83)

 at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)

 at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)

 at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)

 at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)

 at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)

 at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)

 at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:68)

 at org.junit.runners.ParentRunner.run(ParentRunner.java:236)

 at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:163)

 at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)

 at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)

 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)

 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)

 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)

 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)


问题原因:


Spring版本


 spring用3.x 不报错。<spring.version>3.2.3.RELEASE</spring.version>


 


 spring用4.x报错。<spring.version>4.1.4.RELEASE</spring.version>


<dependency>

 <groupId>junit</groupId>

 <artifactId>junit</artifactId>

 <version>4.10</version>

 </dependency>




最终结果:项目中有很多地方pom.xml都配置junit,各种版本。


最后,只留一个4.10的配置,就好了。




真是坑,花了几个小时才搞定。