Skip to main content

先说一下背景,项目中每个人都承担了一些模块的开发工作,而这些模块之间耦合性又比较大。例如,A的功能需要从B和C的模块获取数据。

因此我们设计了一个数据导入功能,每个人开发完自己的功能模块后,把测试用的数据写入sql脚本,这样其他人更新了代码后,执行导入就可以用别人的模块了。

配置如下,测试环境使用h2数据库并在IOC容器启动的时候初始化一些数据

阅读全文


Java的基本类型有8个,分别是:byte、int、short、long、float、double、char、boolean。

但《Thinking in Java》中写的是9个,把 void 也算进去了。

如果你看过TIJ,这时候面试就要小心了,如果你说了9个,很有必要解释一下为什么。否则对方如果不知道还以为你很菜。

我遇到过一次,当时是甲方对我们这边项目组成员有电话面试的要求,面试中问了这个问题,我说了9个,依次说完,然后对面懵逼了,让我再说一遍,说完听对面轻蔑的笑了一声,然后就问了下一个问题,根本没给解释的机会,所以最好是先说8个,然后再说《Thinking in Java》中写的是9个,把 void 也算进去了。

那么为什么Thinking in Java》中把void也算进去了呢?

因为Java的类型分成两种,一种是基本类型,一种是引用类型。两种类型的本质区别就是:基本类型是在堆栈处分配空间存“值”。引用类型,是在堆里面分配空间存“值”。void是不能new出来,也就是不能在堆里面分配空间存对应的值。那就是一开始在堆栈处分配好空间了。所以,有些人将void归成基本类型。


在项目中写了个启动的shell,在linux上执行报了语法错误,具体如下:

阅读全文


无意中在Maven公服中发现bootstrap经被打包到jar中了。

http://mvnrepository.com/artifact/org.webjars/bootstrap

阅读全文


这是去年配置服务器时记录的,当时有一个CentOS的阿里云服务器,是乙方公司给配置好的,并且部署了我们的产品。

后来组建了技术团队,产品重构了,在新版本预生产阶段又买了一台阿里云,参照之前的服务器又配置了一台,配置过程如下:

阅读全文


dozer 对 spring 做了集成,需要引入一个新的依赖 dozer-spring,然后一下Ioc。

pom 配置:

阅读全文


如果想在项目中用 dozer ,需要了解一些高级配置,例如:配置、全局配置、属性排除、枚举类型处理,字符转日期,集合类型处理,事件监听,等等。

因为项目中不打算用dozer了,原因是我们的项目需要bean转换的地方不多,暂时就不给程序员增加工作量了,对 dozer的研究停止了,下面是一些有用的链接:

5.5.1官网:http://dozer.sourceforge.net/

新版本首页:https://dozermapper.github.io/

GitHub 仓库地址:https://github.com/DozerMapper/dozer

GitHub 仓库下的WIKI:https://github.com/DozerMapper/dozer/wiki

GitBook:https://dozermapper.github.io/gitbook/


dozer 是什么?

说简单点,它就是个高级的 BeanUtils 。它可以实现 一个 java bean 到 另一个 java bean 的数据拷贝和类型转换等功能。

dozer 使用场景

在Java项目中,通常都会定义数据库模型,例如 xxxModel,也有叫 xxxEntity的,这些模型和数据库的表一一对应,并且模型之间还有关系,查询一条数据的时候,会把与之关联的对象也查询出来,这会导致一些问题,例如,有些敏感字段的数据,在某些操作时不可以返回;需要返回json格式的数据格式,在转换json的时候无限递归了。

总之,对应数据库的表有一些JavaBean,对应前端数据展示也有一些JavaBean,通常称之为DTO,VO之类的。

有些人可能会写大量的 set get来解决,也有人可能会用 commons-lang 或者 spring 的 BeanUtils工具类来拷贝,但项目如果比较大,并且数据结构比较复杂,就有必要设计一下了。之前在做SAP的Hybris 的时候里面设计的就很好。

Dozer 就是为了解决这些问题而存在的。

阅读全文