Java踩坑记录

Java开发中避免不了遇到各种坑,希望其他童鞋不要不如后尘,不要在坑里打滚。

1、jra hell, 好多时候maven引入的包出问题(Class loading之类的问题)由于m2 本地夹包污染,删掉重来
2、Junit测试类必须命名成“Tests”的后缀,如果命名为.Net风格 的“Test”,对不起,你的测试Junit发现不了。
3、tomcat catalina 等配置,必须采用标准tomcat 发布规范来避免测试环境搭建和发布异常(参考:测试环境下单Tomcat运行多个站点 、如何在测试环境发布Java应用(java deployment相关))。
4、Java的resource包中的资源中的2进制文件会被maven修改,你必须显示声明禁止它去修改。
5、资源定位 properties读取
6、Java的sun base64 类库jenkins读取不了,maven不认识,你要用新的库或者你自己手写,否则jenkins不认识。
7 string() toString()//response.body().string() ,java官方包不一定好用,第三方包可能命名很不规范,使用请注意,第一参考对象是第三方包的官方文档,而不是你的(错误)经验。
8、mybatis坑:

  • mapper xml中sql严格区分大小写;
  • mabatis中要么注解注入要么xml配置注入,请不要混合使用。
  • 注解注入的请严格建立包结构 :mybatis的xml文件(mapper文件)必须和Dao文件在同一个dao里面否则需要些配置中指出xml位置;
  • mybatis的xml文件(mapper文件)必须和Dao文件命名的一模一样(在这上面浪费半个小时(悲伤)


9、参数配置中心应用名字、参数名等大小写敏感;
10、配置中心不能放在静态字段或者静态类、方法中
11、java测试总结:PowerMockito vs Mockito.when 
spy()
//创建spy(真实对象),如果不创建的话,后面调用对象就都是Mock类,这里创建了spy后,只有设置了mock的方法才会调用mock行为 。结论:spy 部分mock方法
mock()
doNothing()
@RunWith(PowerMockRunner.class)
@PrepareForTest({PropertiesLoader.class})
只能作用于mock方法
12、Java单元测试可能导致的内存泄露,需要我们写测试的规避这一点:
http://stackoverflow.com/questions/20852013/java-lang-outofmemoryerror-permgen-with-jenkins-and-maven

13、Java天生为linux服务,windows系统区别文件大小写,而java不区分,为了一致性,请把包名命名成小写,同样url定义也是完全区分大小写,请在开发中注意这些和.Net不同点。

14、线上Babel发布的Java 项目挂载的nginx只能是80端口,按照应用名字区分,设计部署架构和以后上线发布的同学们需要注意这一点,考虑如何F5最终到你的应用的路由规则的配置。

15、  pom.xml中应用名  <artifactId>AAA</artifactId>,和applicationContext-framework.xml 中的应用名<cmbus:application application="BBB" 需要一致,如果分别设置成AAA和BBB,本地生成的配置参数缓存文件在不同的目录内,而且参数配置下载不下来,造成参数配置中心功能失效,需要统一设置为一样的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值