Spring面试题集(目前有些没有去找答案)

spring 的优点?

1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦

2.可以使用容易提供的众多服务,如事务管理,消息服务等

3.容器提供单例模式支持

4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能

5.容器提供了众多的辅助类,能加快应用的开发

6.spring对于主流的应用框架提供了集成支持,如hibernate,JPA,Struts等

7.spring属于低侵入式设计,代码的污染极低

8.独立于各种应用服务器

9.spring的DI机制降低了业务对象替换的复杂性

10.Spring的高度开放性,并不强制应用完全依赖于Spring,开发者可以自由选择spring的部分或全部

Spring AOP相关的几道面试题

1. 说出Spring的通知类型有哪些?

Spring aop通知分为5类:

         1.前置通知[before advice]:在连接点前面执行,前置通知不会影响连接点的执行,除非此处抛出异常。

         2.正常返回通知[After returning advice]:在连接点正常执行完成后执行,如果连接点抛出异常,则不会执行。

         3.异常返回通知[After throwing advice]:在连接点抛出异常后执行。

         4.返回通知[After(finally) advice]:在连接点执行完成后执行,不管是正常执行完成,还是抛出异常,都会执行返回通知中的内容。

         5.环绕通知[Around advice]:环绕通知围绕在连接点前后,比如一个方法调用的前后。这是个强大的通知类型,能在方法调用前后自定义一些操作。环绕通知还需要负责决定是继续处理join point(调用ProceedingJoinPoint的proceed方法)还是终端执行。

网站实现demo:https://blog.csdn.net/cqabl/article/details/46965197

2. 谈谈目标对象实现接口与目标对象不实现接口有什么区别?

   一个对象序列化的接口,一个类只有实现了Serializable接口,它的对象才是可与裂化的。因此如果要序列化某些类的对象,这些类就必须是实现Serializable接口,而实际上,Serializable是一个空接口,没有什么具体的内容,他的目的只是简单的标识一个类。

3. 请描述JDK动态代理和CGLI代理的区别?

   相同点:JDK动态代理和CGLI代理都是动态代理。

    JDK动态代理:代理对象和目标对象实现了相同的接口,目标对象作为代理对象的一个属性,具体接口实现中,可以在调用目标对象相应的方法后加上其他业务处理逻辑。JDK动态代理只能针对实现了接口的类生成代理。

    CGLIB代理:是针对类实现代理,主要是对指定的类生成一个子类,覆盖其中的所有方法,所以该类或的方法不能声明成final的。

如果目标对此昂没有实现接口,则默认会采用CGLIB代理;

如果目标实现了接口,可以强制使用CGLIB实现代理(添加CGLIB库,并在spring配置中加入

4. 简述ProxyFactoryBean的作用是什么?

      1.产生proxy.

5. 叙述Spring中的自动代理的原理?

5. 写出创建代理对象需指定的三要素是什么?

6. 写出代理的两种方式分别是什么?

7. 请简述:什么是AOP?

8. 简述AOP核心?

9. 请叙述AOP事务的含义?

什么是DI机制?

依赖注入(Dependecy Injection)和控制反转(Inversion of Control)是同一个概念,具体的讲:当某个角色

需要另外一个角色协助的时候,在传统的程序设计过程中,通常由调用者来创建被调用者的实例。但在spring中

你可能感兴趣的:(Spring面试题集(目前有些没有去找答案))