1、说说什么是spring ioc?
- spring ioc为控制反转,反转了依赖方式的满足,由之前自己创建对象变为工厂推送,解耦,所谓 IOC ,就是由 Spring IOC 容器来负责对象的生命周期和对象之间的关系
2、说说什么是spring aop?
- 面向切面编程
- AOP 有助于我们将不同但是有必要的重复性代码重构为不同的模块,将重复性的代码集中起来管理起来复用。
- 切面:把基础业务织入到核心方法中
- 切入点:核心方法
- 连接点:就是核心方法和基础方法的连接,里面封装了核心方法的一些信息。
- 增强:前置增强,后置增强,最终增强,异常增强,环绕增强
3、什么是代理设计模式?如何代码实现?
- 使用一个代理将对象包装起来,然后用该代理对象取代原始对象。任何对原始对象的调用都要通过代理。代理对象决定是否新增业务以及何时将方法调用转到原始对象方法上。
- 代理方法由jdk动态代理和cglib动态代理
4、jdk代理和cglib代理的区别?
- jdk动态代理:
基于接口进行代理
代理对象必须实现 InvocationHandler 接口
代理类和目标类必须实现共同接口 - cglib动态代理
基于集成方式进行代理的
代理类是目标类的子类
5、什么是JoinPoint?有什么用?
- joinpoint里封装了核心方法的信息,在切面中添加joinpoint参数就可以获得到封装了该方法信息的joinpoint对象。
6、增强处理方法都有哪些?
- 前置增强
- 后置增强
- 异常增强
- 最终增强
- 环绕增强
7、SpringBean的配置方式都有哪些?
- 基于xml配置bean
- 基于注解配置
@controller 控制器
@Service 业务层
@Component 其他
@Repository Dao层 - 基于java类的配置 @Bean
8、ApplicationContext通常的实现是什么?
- FileSystemXmlApplicationContext : 可以加载磁盘任意路径下的配置文件
- ClassPathXmlApplicationContext:可以加载类路径下的配置文件
- AnnotationConfigApplicationContext:用于读取注解 创建容器
9、在 Spring中如何注入一个java集合?
-
<property> --lsit集合 <list> <ref bean="emp1" /> </list> --set集合 <set> <ref bean="emp1" /> </set> --map <map> <entry key="1" value-ref="emp1" /> </map> --给属性集合配置 <props> <prop key="pp1">hello</prop> </props> </property>
10、Spring支持的事务管理类型
- 声明式事务:可以将业务和事务管理分离,只需要使用注解和XML进行配置。
- 编程式事务:灵活性高,很难维护。
- (补充:事务分为全局事务和局部事务)