关于spring的面试题

https://blog.csdn.net/a745233700/article/details/80959716

1、Spring是什么?

 它是基于IOC容器和AOP容器的框架

 

 

2、Spring 的优点?

应用IOC设计原则,减低计算机代码的耦合性

简单:

快捷:

安全:

容易理解:

 

3、Spring的AOP理解:

AOP:面向切面编程 

原理:将项目中的各个功能分离出来

 

4、Spring的IoC理解:

字面意思:Inversion of controller 控制反转 : 对对象的控制权,由应用代码转移到外部容器,就是控制权的转移

深层意思:将bean的创建和管理交给容器,让容器来统一维护bean的对象。我们只需要从容器中直接获取bean对象就行,而不用额外编写代码创建bean对象

 

5、BeanFactory和ApplicationContext有什么区别?

结构上面: ApplicationContext 是BeanFactory的子类

相同点:

不同点:ApplicationContext更加灵活强大

 

6、请解释Spring Bean的生命周期?

创建: 创建bean

构造:如果是单实例在容器启动时,将bean加载到容器中;如果是多实例,在获取bean的时候加载

初始化前:通过调用beanPostProcesserBeforce 方法,执行初始化前的一些操作

初始化:initBean..来初始化实例对象

初始化后:通过调用beanPostProcesserAfter 方法,执行初始化前的一些操作

销毁:如果方法实现了Destory接口,那么容器关闭前,执行销毁方法

 

7、 解释Spring支持的几种bean的作用域。

single 单例方式

protopy 多实例方式

request:同一个请求只创建一个对象

session:同一个session只创建一个对象

8、Spring框架中的单例Beans是线程安全的么?

 这些bean都是单例的,所以是共享对象,可能存在线程安全问题

 

9、Spring如何处理线程并发问题?

   有一个异步处理器beanpostProcesser

   @Anys 注解

  ????

 

 

10-1、Spring基于xml注入bean的几种方式:

注入bean的几种方式:

xml注入 

@bean   

@ComponentScan和@Autowried

 

10-2、Spring的自动装配:

@Autowired

针对这个注解,要从以下几个方面分析

作用:@Autowired 可以使对象注入到目标对象中

可以用在哪里: 可以用在构造器,属性,参数,方法中

有哪些属性: 支持request属性,表示自动注入的这个类如果不在容器中,那么也不报错

延伸: @Resource  不支持@Primary 和不支持request方法 

             @Inject   支持@Primary 和不支持request方法 

 区别: @Autowired使spring定义的,其他两个是java自定义的

 

11、Spring 框架中都用到了哪些设计模式?

工厂模式:BeanFactory  通过反射构建实例对象

代理模式:ioc容器将对象构建一个代理对象返回

监听者模式:

单例模式:每一个bean默认都是单实例的

模板方法:

装饰者模式:wrap 用来装饰类

适配器模式:将某些切面方法通过适配器装换成链

 

12、Spring事务的实现方式和实现原理:

实现事务的注解:通过@Transtation 和@EnableTranstationManager

底层实现: 

                       有一个类可以,如果没有出错,那么执行commit()方法

                                                如果出错了,在catch中调用rollBack()方法

 

13、Spring框架中有哪些不同类型的事件?

       even? 事件派发器?

 

14、解释一下Spring AOP里面的几个名词:

切面: 要调用的对象bean

切点:pointCut 要通知的方法

 

15、Spring通知有哪些类型?

前置通知:在方法执行前,调用的方法

后置通知:在方法执行后,调用的方法

返回通知:在方法执行正常返回,调用的方法

异常通知:在方法执行异常返回,调用的方法

环绕通知:

16、Spring的依赖注入(DI)

在运行期间,由外部容器动态的将依赖对象注入到组件中

15、Spring mvc 和struts 区别:

从以下几个维度:

   1)机制:springmvc入口是servlet ,   struts2是filter

   2) 性能: spring比struts快。springmvc是基于方法的设计,拦截方法,拦截到方法后根据参数上的注解,把request数据注入进去,并且一个方法对应一个request上下文;struts2是基于类的,每次发一个请求都会实例一个action,每个action都会被注入属性,通过setter,getter把request的数据注入,实际上就是通过getter,setter,方法和request打交道的,一个action对应一个上下文

   3)参数传递:struts是在接收参数的时候,可以用属性来接收参数,这说明参数是让多个方法共享的,即struts2所有变量是共享的

  4)设计思想: struts更加符合oop编程思想,spring比较谨慎,在servlet上扩展

  5)intercepter拦截器的实现机制:struts有自己的拦截机制,springmvc是独立的AOP方式;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值