什么是spring 初识spring
spring是什么?
spring(春天)—程序员的春天。spring是轻量级的ioc、aop容器框架。他简化了应用的开发,让程序员专注于业务逻辑的实现。
spring ioc
ioc主要有两个功能点–控制反转和依赖注入。
- 控制反转:是将原本java对象的自主控制权转移到spring容器中,有spring容器进行java对象的实例化和管理。通俗的说就是原本java对象直接通过new创建出一个实例,现在将这个操作转移到spring容器,有spring容器进行。
- 依赖注入:通过spring容器为java对象中的属性进行赋值。spring进行依赖注入的方式:构造注入、set注入和注解注入。
spring aop
aop使用的是面向编程的思想,它将程序中冗余的部分抽离出来统一管理(日志信息、异常信息等),使用代理对象对java类进行增强处理。aop的代理方式有两种:静态代理和动态代理
-
静态代理
AspectJ(代表),静态代理表示的是在编译时,aop将java对象增强为aop对象,在原有的类的基础上进行增强(编译时增强)。 -
动态处理
spring aop的动态处理有两种方式:jdk动态处理和CGLIB动态处理,jdk动态处理通过反射的方式动态获取java类中的方法以此获取一个新的java类,并在此基础上进行增强处理得到一个aop对象。CGLIB是通过代码生成的类库,使用的是继承的方式动态的生成java类通过增强处理后得到aop对象。
注意:CGLIB使用的是继承的方式动态生成的java类对象,所以使用final关键字修饰的类无法使用CGLIB方式进行处理 -
静态处理和动态处理的区别
动态处理和静态处理相比,静态处理具有较号的性能,但是静态处理需要有特定的编译器,动态处理则不需要。