- 给自己使用的无需定义接口;即一个模块内部的都是封装的,定义接口并不会得到很多好处,变过几次实现?? “优先面向接口编程,而非实现” 不是必须,是优先;
- 给朋友(第三方)使用的定义接口;即要公开的功能,因为接口就是个契约,就是沟通用的;
- 优先使用setter注入,除非必要才使用构造器注入;
- 使用CGLIB代理,这样基本不会出现AOP代理注入不了或一些隐晦的问题;
- 优先使用Spring提供的XML标签简化功能定义,如<aop:config>、<task:executor>等,而不要使用低层次API;
- 尽量使用XML风格的事务,而不是注解风格;
- 按照配置的内容分多配置文件存放配置,不要一股脑的放在一起,就像不分包那样;
- 可配置部分(如db数据)还是放到XML中,不要什么都注解;
- 使用Spring profile 或 maven profile分环境测试(如开发环境、测试环境、正式机环境);