经过近一个月对spring的学习,总结下对于spring一些核心的东西:
1.DI(spring 依赖注入)
这章算是spring里面最简单的东西了,不过对于高级Bean的装配还是得去研究研究。
主要运用的原理是:通过JAVA的反射原理构造实例
2.AOP(面向切面编程)
这个是难点,但基本的概念还是比较好理解的。但是对于aop的实际运用还是比较少的。把握好了aop对于spring事务处理和spring modules实现缓存的理解很有帮助,因为他们都使用了aop
主要运用原理:动态代理
3.Template(jdbcTemplate,hibernateTemplate)
这个也是基本的东西了,系统的持久层,简化数据访问。首先配置数据源,然后配置一个模板(jdbcTemplate或其他),将数据源注入给模板,再配置一个Dao,将模板注入给Dao。这就可以在Dao中使用模板了,当然还可以使用Dao支持类。
4.cache(缓存,主要是:使用springmodlues来管理ehcache)
这是利用aop原理实现的,但发现测试的时候有个BUG。博客里也有相关文章
5.事务管理(transaction manager)
这也是利用aop原理实现的,基本的步骤为:将数据源(datasource)注入到一个事务管理器(如:jdbc.datasource....)
,然后为事务目标(target)创建代理.要注意的是:事务目标必须实现某个接口 (AOP中的一种动态代理方式,通过cglib不知道怎么实现!)。代理中有几个属性:1.事务目标;2.代理接口(目标实现的接口);3.事务管理器;4.事务规则,边界;当然常用的还是注解驱动式和<tx:advice>方式。这里面当然最重要的还是要理解事务的概念,如:脏读,不可重复读,幻读等,传播行为那些定义。对我理解这些概念帮助比较大是javaeye 论坛中一些大牛的帖子,在收藏里面有!有时间还得去读读。
6.DAO的设计
这个好像分歧比较大,在javaeye的论坛中讨论也很多。