(2)spring中的BOP、DI、AOP理念

1.Spring 设计的初衷

Spring 是为解决企业级应用开发的复杂性而设计, 她可以做很多事。 但归根到底支撑 Spring 的仅
仅是少许的基本理念, 而所有地这些的基本理念都能可以追溯到一个最根本的使命: 简化开发。 这是一个郑重的承诺, 其实许多框架都声称在某些方面做了简化。
而 Spring 则立志于全方面的简化 Java 开发。 对此, 她主要采取了 4 个关键策略:
1, 基于 POJO 的轻量级和最小侵入性编程;
2, 通过依赖注入和面向接口松耦合;
3, 基于切面和惯性进行声明式编程;
4, 通过切面和模板减少样板式代码;
而他主要是通过: 面向 Bean、 依赖注入以及面向切面这三种方式来达成的。

2. BOP 编程

Spring 是面向 Bean 的编程(Bean Oriented Programming, BOP) , Bean 在 Spring 中才是真正的主角。Bean在 Spring中作用就像 Object对 OOP的意义一样,Spring中没有 Bean也就没有 Spring存在的意义。 Spring 提供了IOC 容器通过配置文件或者注解的方式来管理对象之间的依赖关系

2. DI概念

控制反转(其中最常见的方式叫做依赖注入(Dependency Injection, DI) , 还有一种方式叫“依赖查找” (Dependency Lookup, DL) , 她在 C++、 Java、 PHP 以及.NET 中都运用。 在最早的 Spring中是包含有依赖注入方法和依赖查询的, 但因为依赖查询使用频率过低, 不久就被 Spring 移除了,以在 Spring 中控制反转也被称作依赖注入), 她的基本概念是: 不创建对象, 但是描述创建它们的方式。在代码中不直接与对象和服务连接, 但在配置文件中描述哪一个组件需要哪一项服务。容器(在 Spring框架中是 IOC 容器) 负责将这些联系在一起。

在典型的 IOC 场景中, 容器创建了所有对象, 并设置必要的属性将它们连接在一起, 决定什么时间调用方法

3. AOP编程理念

面向切面编程, 即 AOP, 是一种编程思想, 它允许程序员对横切关注点或横切典型的职责分界线的行为(例如日志和事务管理) 进行模块化。 AOP 的核心构造是方面(切面) , 它将那些影响多个类的行为封装到可重用的模块中。

AOP 和 IOC 是补充性的技术, 它们都运用模块化方式解决企业应用程序开发中的复杂问题。 在典型的面向对象开发方式中, 可能要将日志记录语句放在所有方法和 Java 类中才能实现日志功能。 在 AOP方式中, 可以反过来将日志服务模块化, 并以声明的方式将它们应用到需要日志的组件上。 当然, 优势就是 Java 类不需要知道日志服务的存在, 也不需要考虑相关的代码。 所以,用 Spring AOP 编写的应用程序代码是松散耦合的。

AOP 的功能完全集成到了Spring 事务管理、 日志和其他各种特性的上下文中

AOP 编程的常用场景有: Authentication 权限认证、 Logging 日志、 Transctions Manager 事务、Lazy Loading 懒加载、 Context Process 上下文处理、 Error Handler 错误跟踪(异常捕获机制)、 Cache 缓存。

你可能感兴趣的:((2)spring中的BOP、DI、AOP理念)