分。
9控制反转也叫依赖注入。利用了工厂模式
将对象交给容器管理,你只需要在 配置文件总配置相应的 8,以及设置相
关的属性,让 spring 容器来生成类的实例对象以及管理对象。在 容器启动的时候,
会把你在配置文件中配置的 8 都初始化好,然后在你需要调用的时候,就把它
已经初始化好的那些 8 分配给你需要调用这些 8 的类(假设这个类名是 ),分
配的方法就是调用 的 方法来注入,而不需要你在 里面 . 这些 8 了。
注意:面试的时候,如果有条件,画图,这样更加显得你懂了
9面向切面编程。(0$)
可以说是对 的补充和完善。 引入封装、继承和多态性等概念来建立一
种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为
的时候, 则显得无能为力。也就是说, 允许你定义从上到下的关系,但并不适
合定义从左到右的关系。例如日志功能。日志代码往往水平地散布在所有对象层次中,而
与它所散布到的对象的核心功能毫无关系。在 设计中,它导致了大量代码的重复,
而不利于各个模块的重用。
将程序中的交叉业务逻辑(比如安全,日志,事务等),封装成一个切面,然后注入
到目标对象(具体业务逻辑)中去。
实现 的技术,主要分为两大类:一是采用动态代理技术,利用截取消息的方式,对该
消息进行装饰,以取代原有对象行为的执行;二是采用静态织入的方式,引入特定的语法
创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码
5.Spring 中单例及原型
@ 有无状态决定应该使用单例或多例,即不同情况下是否具有出现不同的状态
在大多数情况下,& 和 是且需为单例的
在 5 中,显然 不是单例的,因为一个 对应一个 A5 上下文;
而在 43 中,特别是在满足 >= 的架构中,'' 应为单例,因控制器只
应起到交由相应的服务去处理业务逻辑,此时的单例会大大减少创建及销毁控制器的开销
(若控制器中需要有对应的成员变量,为了保证线程安全,应当使用 "$*' 去保存
该成员变量)
注:
类的成员变量存储位置为堆,而类的局部变量存储位置为虚拟机栈中的栈帧。(若局部变
量指向的对象非基本类型,则该对象存储在堆中,而该对象的引用存储在栈中
=B. (C此时 . (生成的对象存储在堆中, 存储在栈
中)