0 引言

  本文主要描述的是Spring常用的两大特色功能:AOP和IoC容器

1 IoC

  Spring的IoC:就是常说的“控制反转”,也又叫依赖注入的(DI)。

  优点:IoC最大的好处就是把对象生成放在了XML里定义,所以当我们需要换一个实现子类将会变得很简单(说的是基于接口的编程),只需要修改XML就可以了,这样我们不用重新编译即可运行,甚至可以实现对象的热插拔。

  缺点:由于对象的生成使用了反射编程,所以也给它带来了影响效率的缺点,但是相对于它能提高可维护性和灵活性,这点损耗也就不算什么了,除非对效率要求特别高。

2 AOP

  Spring的AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。

2.1 AOP 使用场景 

  Authentication 权限

  Caching 缓存

  Context passing 内容传递

  Error handling 错误处理

  Lazy loading 懒加载

  Debugging  调试

  logging, tracing, profiling and monitoring 记录跟踪 优化 校准

  Performance optimization 性能优化

  Persistence  持久化

  Resource pooling 资源池

  Synchronization 同步

  Transactions 事务

2.2 AOP 相关概念

  方面(Aspect)、连接点(joinpoint)、通知(advice)、切入点(pointcut)、引入(introduction)、aop代理

  1. 配置切面:config

  2. 声明:pointcut

  3. 通知:advice

     前置通知 before

     返回后通知 after-returning

     抛出异常后通知 after-throwing

     后通知 after

     环绕通知 around

最新文章

  1. AFNetworking 3.0 源码解读(五)之 AFURLSessionManager
  2. Python导入Scipy子模块时出错
  3. (转载)iOS开发历程书籍推荐
  4. Scalaz(31)- Free :自由数据结构-算式和算法的关注分离
  5. js判断空对象
  6. Lazy<T>在Entity Framework中的性能优化实践(附源码)
  7. 【Todo】深入理解Javascript系列
  8. Openfire服务器MySQL优化
  9. Windows7 下安装ORACLE 11G(遇到的问题)
  10. 关于一次Weblogic活动线程的问题处理
  11. LBA(逻辑区块地址)及PBA(物理区块地址)
  12. iOS多线程的初步研究(六)
  13. java安装1335错误解决办法(亲测)
  14. Java - 双冒泡法排序
  15. CENTOS6.6下mysql5.7.11带boost和不带boost的源码安装
  16. python之MySQL MySQLdb 推荐使用姿势,解决中文乱码
  17. Ubuntu下把缺省的dash shell修改为bash shell
  18. Axure RP 8过期,用户名和序列号(注册码)
  19. linux svn客户端安装
  20. POJ 1733 Parity game(种类并查集)

热门文章

  1. 【codeforces 798B】Mike and strings
  2. UEditor使用总结(与SpringMVC整合)
  3. 【ACM】hdu_zs1_1005_大明A+B _201307291603
  4. 【ACM】NYOJ_506_洗澡_20130725
  5. HDU 4513 manacher
  6. CodeForces - 344A Magnets (模拟题)
  7. 利用Ajax调用controller方法并传递参数
  8. HDU oj A + B Problem II
  9. luogu1969 积木大赛
  10. luogu3953 逛公园