黑马程序员技术交流社区

标题: [南京校区]java学科面试题之spring的理解 [打印本页]

作者: 大蓝鲸小蟀锅    时间: 2018-3-25 10:54
标题: [南京校区]java学科面试题之spring的理解
本帖最后由 大蓝鲸小蟀锅 于 2018-3-25 14:22 编辑

首先呢spring是一个一站式的框架,对咱们java的三层架构的每一层都有一个比较好的支持.比如说DAO层的话有JPA,service层的话有AOP的事务支持
和ioc的解耦支持,controller层的话有springmvc这种比较强大的框架.而且,对第三方技术这块的整合也是非常强大的提供了各种模板;比如像用的redis就提供了redisTemplate的模板等等...
spring的强大有两大思想:一个是IOC,一个是AOP,
IOC呢,控制反转,就是把对象的创建权利去交给spring去管理,这样做的好处是简化了代码的开发和解决层于层之间的耦合性,方便代码维护等等;
其实它底层的话采用的是配置文件+反射+工厂模式的方式来实现的
如果不用spring的IOC思想的话;举个例子:项目中用各种第三方技术有自己的配置文件,代码量比较多还不利于管理,大大的增加了我们程序员的一个工作强度.和spring整合后就简化了部分开发流程---这也是我觉得IOC的一大强大之处吧;
AOP呢,面向切面编程;我觉得它最主要的功能就是帮助我们把一些和公司业务开发无关的一些代码给抽取出来,通过一些配置,在合适的时候再帮助我们给切进去;它底层也是通过动态代理的方式来帮助我实现这些功能的.当然:spring默认的话是采用的JDK的动态代理的方式,是需要接口的,不过我们也可以通过在spring的配置中配置<aop:aspectj-autoproxy proxy-target-class="true"/>来帮助我们强制开启CGLIB的动态代理,这种方式的话可以不需要接口的存在还是比较强大的;
举个例子:比如我们的事务这块就用spring的AOP思想,在执行一些增删改的方法时,提前通过AOP思想帮我们切进去开启事物,在执行完sql之后再切进去提交事务,这些只需要在spring的配置文件中配上声明式事务就可以了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2