今天的时候, 突然 出现了一个 使用仓库拉不下包的问题, 然后 部不断测试更新 settings.xml中的配置[mirror, profile等等], 都还是原样子, 然后 我关闭了所有的 idea窗口, 然后重新开启了一下就好了
可能是 运行的多个 idea 使用的 pom 是缓存在内存中的?? 不管了, 问题解决了就好
-- 2017.07.14
-------------------------------------------------------------------------------------------------------
今天 在使用 open-replicator 来跑单元测试解析 binlog 的时候, 出现了这样的一个问题,
在我 之前自测的时候, 使用的 public static void main, 然后 启动程序没有什么问题,
然后 之后我准备写业务代码的时候, 然后 使用的是 Spring + JUnit 单元测试, 然后 把我的 main中的代码 原样拖了过来, 发现 妈的有时候打印一个记录, 有时候打印三个记录, 然后 程序就结束了,
然后 首先 我以为是 open-replicator 包的问题, 然后 重新打了一下, 发现问题 依然 存在,
然后 debug, 发现 在TableMapEventParser 解析 TableEvent 的时候, 获取 columnCnt 的时候 debug 突然 便中断了, 百思不得其解,
然后 想了一下, 是不是 单元测试的主线程挂了的原因, 或许单元测试 和普通的 public static void main 的机制有些不同的地方呢 ??
然后 之后, 在单元测试末尾加了一个 System.in.read(), ok, 然后 没有立即退出了
哦, 对了 System.in.read() 在单元测试中也有不同的地方[和 public static void main],
-- 2017.07.14
-------------------------------------------------------------------------------------------------------
Error:
Maven Resources Compiler: Failed to copy ‘D:\Program Files\xxx\XXExMapper.xml’
to
‘D:\Program Files\$fakePath\src\test\resources\mappers\expand\XXExMapper.xml’: D:\Program Files\$fakePath\target\classes\resources\mappers\expand\XXExMapper.xml (拒绝访问。)
这位朋友的文章说是由于文件只读的原因, 然后 我去瞅了瞅该文件, 发现可读呀,
然后 之后删掉该文件夹, 然后 revert 了, 解决了额这个问题, 感觉如果要具体追溯这个问题的原因, 估计 要从工具, 文件系统方向去追溯了吧, 很不幸, 都搞不定, 呵呵
-- 2017.08.17
-------------------------------------------------------------------------------------------------------
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'xxDao': Invocation of init method failed; nested exception is org.springframework.data.mapping.model.MappingException: Error creating bean with name 'com.xx.IScheduleService': Cannot resolve reference to bean 'scheduleService' while setting bean property 'ref'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'scheduleService': Injection of autowired dependencies failed; nested exception is java.lang.IllegalArgumentException: Can not set com.xx.ScheduleService field com.xx.ScheduleService.scheduleService to com.sun.proxy.$Proxy62
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:136)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:408)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:187)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1208)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1048)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1018)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:570)
... 204 more
奇葩问题, 然后 删掉项目, revert, 然后 就好了, 原因不明 ??, idea 的问题??
-- 2017.08.17
-------------------------------------------------------------------------------------------------------
Caused by: java.lang.IllegalArgumentException: Can not set com.xxx.ScheduleService field com.xxx.scheduleService to com.sun.proxy.$Proxy61
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:164)
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:168)
at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:81)
at java.lang.reflect.Field.set(Field.java:741)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:598)
at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:350)
... 255 more
还是因为 在 XXService 上面增加了 @XXLogger, 这是一个AOP输出日志的注解, 细节原因 待探究
-- 2017.08.23
======================= add at 2017.09.09 =======================
记录一个问题, 今天的时候 出现了这样的一个问题, 相同的项目相同的代码 model01, 然后 在测试服务器上面跑出来的结果, 和本地挂dubbo服务得到的结果不一致,
前者 抛了异常, 然后 后者得到的结果一个正确的结果, 然后 之后的时候, 我想过来想过去没有想通, 然后请同事帮忙重新发布了一下项目 model01, 然后 放上去, 结果 得到的结果还是一样
抛出异常的这段代码, 主要是 调用了model02放出来的服务, 然后 想了一下, 上次好像更新了 mode02的代码, 然后 重新发布了一下项目 model02
因此 本地挂dubbo服务的 model01 引用的 model02-api.jar 和放出服务的 model02 的model02-api.jar 是一致的
然后 测试服务器上面挂dubbo服务的 model01 引用的 model02-api.jar 和放出服务的 model02 的model02-api.jar 可能不一样, 测试服务器上面的 model01项目上面 使用的 model02-api.jar 可能还没有更新,
然后 就把最新的 model02-api.jar 放到了 测试服务器上面的 model01 项目的包中, 然后 就得到了正确的结果
-- 2017.08.25
-------------------------------------------------------------------------------------------------------
SELECT * FROM window_base_config WHERE type = #{type}
<if test="type='station' and stationNo!=null">
AND station_no IN (#{stationNo})
</if>
type 不管传入什么, 实际参数是 true (Boolean), 然后 可能是type关键字的问题,
List<WindowConfig> getWindowConfigs(@Param("type") String type, @Param("stationNo") String stationNo);
这种情况, 在这种声明方式的时候, 会出现这个问题, 但是在其他的情况下似乎是不会出现这个问题 #{type} 能够正常使用
这种情况下, 更新一下 placeholder 的名字就可以了,
-------------------------------------------------
==> Preparing: SELECT * FROM window_base_config WHERE type = ? AND station_no IN (?)
==> Parameters: true(Boolean), cbcz(String)
<== Total: 0
-------------------------------------------------
-- 2017.09.08
-------------------------------------------------------------------------------------------------------
Result Maps collection already contains value for XXX
我这里是, XXXMapper.xml 在 generate, expand[我们自己约定的 扩展Mapper] 中存放了两份
-- 2017.09.08