1 / 8

Spring 在微博开发中的应用

Spring 在微博开发中的应用. 道玉. Spring 的核心. 依赖注入 DI 面向切面编程 AOP 着重讲述 AOP 在微博开发中的应用 Application context / server Template 对数据库,异常的封装. AOP. Aop 是为了解决什么问题 交叉模块问题 Don’t repeat yourself 避免成为 copy- paster 式的 编程风格 有哪些是交叉模块问题 权限验证 日志记录 数据分页 搜索数据(不同的搜索条件). AOP 的基本概念. Join point 程序运行时的一个切入点

gilda
Download Presentation

Spring 在微博开发中的应用

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Spring在微博开发中的应用 道玉

  2. Spring的核心 • 依赖注入 DI • 面向切面编程 AOP • 着重讲述AOP在微博开发中的应用 • Application context / server • Template • 对数据库,异常的封装

  3. AOP • Aop是为了解决什么问题 • 交叉模块问题 • Don’t repeat yourself • 避免成为copy-paster式的编程风格 • 有哪些是交叉模块问题 • 权限验证 • 日志记录 • 数据分页 • 搜索数据(不同的搜索条件)

  4. AOP的基本概念 • Join point • 程序运行时的一个切入点 • Point cut • 选择,控制切入点,和收集程序运行到切入点时的上下文环境 • Advice • 在切入点和相应的上下文环境中,需要执行的代码。 • Aspect • Aspect 就是 面向对象编程的类。用来盛放以上的概念。

  5. 一个简单的例子

  6. Spring和python • Python本身是动态语言,为什么需要DI? • 在python下, def func(user): … user可以传任何类型,数组,词典,或者是个对象,这本身就是DI的概念,而且比DI更自由。 • Python本身有meta class编程,为什么需要AOP?(spring的修饰符) • Meta class编程复杂度高 • Spring提供了很多高级特性,使用起来也很简单。

  7. Aop应用在python的好处 • Metaclass • Oop中,class是用来制造object的模板 • Metaclass是用来制造class的模板(只适用于解决部分交叉模块问题) • 应用aop,不需要学习metaclass复杂的概念 • 不需要源代码 • Metaclass编程需要改动源代码,并把decorator是插入回去。 • 应用aop,源代码可以随意变动,并忽略aop的存在。Aop和原功能代码可以互相变动,而不相互影响。 • 不需要monkey patching • 在runtime来动态的给一个object增加,删除,修改它的方法 • 这样虽然带来便利,但是会引入非常多不可预料的BUG • 污染了object

  8. Spring aop的risk • 有些功能被移出了核心代码(例如日志,权限验证等),而是放到了aop代码中,这些功能什么时候生效是不透明的,需要使用配置文件。

More Related