日常心得 2016-10-20

来源:互联网 发布:php缓存技术有哪些 编辑:程序博客网 时间:2024/06/08 16:15

spring+maven跨模块引用类
maven项目以模块开发时,如果core模块被web模块引用,但是某些类是放在web模块中的,又想要在core模块中使用。
可以通过接口的方式解决。
在core中定义一个接口以提供相应的功能。
由于项目使用spring管理,在web中实现这个类并由spring管理bean,在真实使用时会自动注入,可以实现引用。都是在一个项目中,只是在开发过程中不在一起无法引用,运行态即可引用。

2016-10-17
中间件应该提供的是工具,和具体业务无关,自动化处理内部过程,不提供对接业务功能。如果跟业务耦合,自然会死掉。

按接口编程,对接外部服务时,使用接口方式,内部实现类用适配器模式去对接,避免服务切换时修改业务代码,只需要修改适配器模块。这样可以降低以后不使用这个服务,而使用其它服务时,切换服务的成本。

提供给外部使用的方法,如果是工具类别的,最好是静态方法,方便使用。

如果需要把一个变量保存到静态类中,可以在构造函数中set到静态类中,而不需要反向获取。

spring bean定义XML配置优先于注解,但是注入方面,注解优先于XML配置

2016-10-20
quartz 的定时机制,会在加入新的job时触发事件,会直接计算出下一次的执行时间,然后所有的job加入到一个tree中,进行排序,每次都会acquire到第一个,然后触发,用工作线程执行,再取下一个。如果取到的还没有到时间,大于2ms,则会计算出一个间隔时间,然后使用锁去wait(millisecond),锁只是一个普通的 new Object(),wait到时间后或者外部notifyAll()后(这是因为新加或者其它调度器变动而触发的事件)会继续执行。核心都在QuartzSchedulerThread。

0 0
原创粉丝点击