1.
单元测试不能只测试正确性,一般需要单元测试走完所有的分支,测试抛出的异常是否符合期望,测试边界值是不是成立,测试环境出现状况下程序的异常的友好情况
2.
在某些情况下,两个类互相的依赖和关联,比如一个上下文类和一个上下文类中具体的类的依赖,这些是没办法的,上下文类需要管理在它里面的类(容器作用),具体的类也要感知到他的上下文的存在(他的环境),这样环境和类就耦合了,这个是系统设计时必要的耦合,这时可以使用设计原则来优化设计:
面向接口编程,特别是上下文,提供接口,这样和具体类进行联系的就是上下文接口,在改变环境时,只需要改变上下文的实现,不需要动接口,做到了一定的松耦合.
多用组合,少用继承,这个是必须的,使用继承在上面的例子中一点可能也没有,继承必须有一个原则:是is-a的关系,就是直系亲属的关系
3.
Spring的ContextLoaderListener是web应用启动监听器,实现了ServletContextListener接口,他所做的事情有:
创建ContextLoader实例,然后委托ContextLoader初始化WebApplicationContext,
默认为XmlWebApplicationContext,其它自定义的初始化主要是针对contextClass
(不同的WebapplicationContext实现)和contextConfigLocation(配置文件的写法)