Spring面试

1:什么是Spring:

目录

1:什么是Spring:

2:什么是IOC:什么是DI:

3:DI基于构造方法注入的顺序问题:

4:Spring配置的方式:

5:Spring Bean的生命周期:

6:Spring中的作用域范围:

7:Singleton是否线程安全:

8:自动装配模式:

9:Spring的四个隔离级别:

10:AOP中的语法:

11:BeanFactory和ApplicationContext有什么区别:


Spring是一种轻量级的开发框架,(优点)它支持声明式事物管理以及面向切面编程,实现了低耦合以及很好的与第三方框架协同的作用。对象的管理都交给容器,而且对象之间的耦合度较低,更加便于测试。

(缺点)里面的配置太多。

2:什么是IOC:什么是DI:

IOC:控制反转:对象的实例化不再由程序员控制,而是直接交给Spring框架来实例化,并且协调创建的对象之间的依赖关系。这种控制权的转换就是控制反转。它的底层就是用java的反射机制来实现的。

DI:是控制反转的实现方式,它的意思是组件之间的关系在容器运行期间就已经确定。

有三种注入方式:(基于构造方法的注入,基于set方法的注入,基于注解的注入(@Autowrite))

3:DI基于构造方法注入的顺序问题:

4:Spring配置的方式:

基于XML的配置:

原理:Spring的IOC容器启动时就需要传入一个配置文件,才能以此为基础创建一个容器,并且实例化、配置配置文件中配置好的Bean。

Spring 配置文件用于指导Spring 工厂生产Bean,并进行依赖关系的注入。

一般在applicationContext.xml配置文件,可以修改。

基于JAVA的配置:

由@Configuration注解和@Bean注解来实现的。

由@Bean注解的方法将会实例化、配置和初始化一个新对象,这个对象将由Spring的IoC容器来管理。

被@Configuration所注解的类则表示这个类的主要目的是作为资源文件。

基于注解的配置:

开启注解扫描后,就可以用注解的方式在Spring中向属性、方法和构造方法中自动装配变量。

下面是几种比较重要的注解类型:

  1. @Required:该注解应用于设值方法。
  2. @Autowired:该注解应用于有值设值方法、非设值方法、构造方法和变量。
  3. @Qualifier:该注解和@Autowired注解搭配使用,多个bean时可以选择执行顺序。

5:Spring Bean的生命周期:

6:Spring中的作用域范围:

Singleton:(默认)每个容器只有一个实例。有BeanFactory自身来维护

protorype:为每个bean请求提供一个实例

request:为每个来自客户端的请求提供一个实例

Session:在每个Session中只提供一个实例,除非Session过期或者销毁

gloal-Session:全局作用域

7:Singleton是否线程安全:

不是线程安全的,一个容器中只有一个实例,那么多个请求访问通一个实例,那么就会出现多个线程并发访问同一个对象。这样是不安全的。

解决方法:(可以使用ThreadLocal进行处理)

只有无状态的Bean才可以在多线程环境下共享,在Spring中,绝大部分Bean都可以声明为singleton作用域,因为Spring对一些Bean中非线程安全状态采用ThreadLocal进行处理,解决线程安全问题

8:自动装配模式:

No:默认的方式是不进行自动装配,通过手工设置ref 属性来进行装配bean。

ByName:按属性名称,@Resource默认按 byName自动注入。

ByTYPe:按类型:@Autowrite默认按byType自动注入。

Construct:构造方法中的参数通过byType的形式,自动装配。

Default: 由上级标签<beans>的default-autowire属性确定。

9:Spring的四个隔离级别:

脏读:

不可重复读:

幻读:

可重复读:

10:AOP中的语法:

切面(Aspect):被抽取的公共模块,可能会横切多个对象。可以用@AspectJ注解来标识

切入点(PointCut):通过切入点表达式,指定拦截的方法

织入(Weaving):指把增强应用到目标对象来创建新的代理对象的过程。Spring是在运行时完成织入。

通知(Advice):(前置通知,后置通知,环绕通知,异常通知,最终通知)

11:BeanFactory和ApplicationContext有什么区别:

1).BeanFactroy采用的是延迟加载形式来注入Bean的。

而ApplicationContext则相反,它是在容器启动时,一次性创建了所有的Bean。
2).BeanFactory和ApplicationContext都支持BeanPostProcessor、BeanFactoryPostProcessor的使用,但两者之间的区别是:BeanFactory需要手动注册,而ApplicationContext则是自动注册

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值