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下,突然就报错了,之前没问题。
严谨的写法,字符串比较用”括起来。
14.maven如何将项目引用的所有jar包复制到lib文件夹内。
Maven的非web项目在执行时需要引用很多jar包,这时候通常的做法是将这些jar包统一放到lib目录中,maven的dependency插件可以帮我们做这件事情。
我们需要在pom文件的build节点的plugins节点内添加一个plugin,plugin内容如下:
org.apache.maven.plugins
maven-jar-plugin
MainClass
true
lib/
.
org.apache.maven.plugins
maven-dependency-plugin
copy-dependencies
prepare-package
copy-dependencies
E:MavenRepository .0.1-SNAPSHOTlib
false
false
true
参考资料: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 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用4.x报错。
junit
junit
4.10
最终结果:项目中有很多地方pom.xml都配置junit,各种版本。
最后,只留一个4.10的配置,就好了。
真是坑,花了几个小时才搞定。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net