一: Spring IOC 和AOP 回答 (可与设计模式一起回答)
Spring中用到了 单例模式(默认是单例,更改多例 scope="prototype"); 工厂模式和反射;代理模式;
IOC: 1-1 控制反转,利用工厂模式将对象交给容器(applicationContext)管理, 只要在spring配置文件中配置相应的bean 和相应的属性(反射),让spring 容器来生成类的实例对象和管理对象;
1-2 在spring 容器启动的时候, spring 会把配置文件配置好的bean 都初始化好, 在你需要调用的时候,把初始化好的bean 分配给需要调用bean 的类, 分配的方法就是 调用 该类的setter 方法(或 带参数的构造方法)注入, 而不是 你在 A 里面 new 这个bean;
要点: 工厂模式 applicationContext容器 依赖注入方式(三种:属性setter,构造注入,面向接口注入) 利用反射原理获取到配置里面类的实例对象;
2-1:
AOP: 面向切面编程; 将程序中的交叉业务逻辑(安全,日志,事务),封装成一个切面,然后注入到目标对象中; 一是采用动态代理技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期
间织入有关“方面”的代码.
要点: 安全,日志, 事务有可能让分别说一下; 动态代理(jdk动态代理)
(一般面试官会继续给你挖坑) spring中的事务; 动态代理底层