spring面试题

1、spring

[1]IOC/DI

(给定义)IOC是spring的一个特点,叫控制反转,也称之为DI。

(阐述)spring是一个IOC容器,我们可以将我们的对象交给spring管理。这时我们将对象的创建权利和组装权利全部交给spring管理,这就是所谓控制反转。spring可以通过反射调用setter方法帮我们给对象注入属性值,这就是DI。

(总结)IOC主要的作用就是解耦。

[2]AOP

(给定义)APO是spring的一大特点,叫做面向切面编程。

(阐述)AOP是OOP的延续。我们在程序将一些公共的功能抽取出来,作为一个切面。在实现业务时就不需要关系这些公共的功能,当程序运行时,再动态将这些公共功能织入到我们业务中。这种现象就叫AOP。spring利用动态代理实现了AOP。可以动态的增强我们的业务方法。

(总结)进一步的解耦。动态增强业务。

[3]生命是spring

(给定义)spring是一个轻量级的javaEE框架。

(阐述)spring是一个IOC容器,实现了AOP。所谓IOC就是xxxx。所谓AOP就是xxxx。

另外spring还提供对很多其他框架和技术的整合支持。比如可以快速的整合MyBatis,ActiveMQ等等。

(总结)spring就是一个粘合剂,大幅度的降低我们程序中组件的耦合度。

[4]spring中是scope都有那些值?分别有什么特点?

①singleton (默认值) ,表示这个Bean对象在spring容器中是单利形式存在。

②prototype ,表示这个Beand的对象在spring容器中不是单利的,每次从容器中取出这个Bean的时候,都会创建一个新Bead对象返回。

[5]spring中Bean的创建方式有那些?

① 使用构造方法创建。默认使用无参数的构造方法创建Bean对象,如果配置了constructor-arg,会使用对应的有参数的构造方法创建Bean对象。

②使用静态方式创建对象,在类中添加一个静态的获取Bean对象的方法,在配置中使用factory-method配置对应的方法名称。

③使用实例工厂方法创建Bean对象,专门创建一个Bean工厂,添加一个创建Bean的方法,在配置中通过factory-bean,和factory-method指明工程对象和方法。当然工程对象也必须交个spring管理

④使用FactoryBean方式 ,编写一个工厂,让其实现接口FactoryBean,在配置时Bean的class直接指向对应的工厂。

这些方式中,第一种方式是我们普遍使用的。第二种,第三种,第四种往往是框架自身实例化时使用的。

[6]spring中属性注入都有那些方式?

1 set方法注入

2 构造方法注入

3 p名称注入

[7]@Autowried和@Resource有什么区别?

1、 @Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。

2、 @Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下:

@Autowired()@Qualifier("baseDao")
private BaseDao baseDao;

3、@Resource(这个注解属于J2EE的),默认按照名称进行装配,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名进行安装名称查找,如果注解写在setter方法上默认取属性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配

@Resource (name="baseDao")
private BaseDao baseDao;

[8]JDK的动态代理和cglib的动态代理有什么区别?

1、Jdk动态代理实例:JDK动态代理只能代理实现了接口的类,其他普通类不能实现。代理类会在 newProxyInstance方法中生成

2、cglib动态代理:cglib是针对类实现代理的,为代理的类生成一个子类,覆盖方法实现增强,因为采用的是继承所以不能代理final修饰的类。需要cglib和asm两个jar包

[9]APO的通知都有那些?

前置通知:应用:权限控制(权限不足抛出异常)、记录方法调用信息日志

后置通知:应用:于业务相关的, 如银行在存取款结束后的发送短信消息

​ 特点:在目标方法运行后返回值后再增强代码逻辑

环绕通知:应用 :日志、缓存、权限、性能监控、事务管理

​ 特点 :目标方法执行前后,都进行增强(控制目标方法执行)

异常抛出通知:应用场景:处理异常(一般不可预知),记录日志

​ 作用:目标代码出现异常,通知执行。记录异常日志、通知管理员(短信、邮件)

最终通知:应用场景:释放资源 (关闭文件、 关闭数据库连接、 网络连接、 释放内存对象 )

​ 作用:不管目标方法是否发生异常,最终通知都会执行(类似于finally代码功能)

[10]什么是申明式事务

声明式事务(declarative transaction management)是[Spring]提供的对程序事务管理的方式之一。

Spring的声明式事务顾名思义就是采用声明的方式来处理事务。这里所说的声明,就是指在配置文件中声明。用在Spring配置文件中声明式的处理事务来代替代码式的处理事务。这样的好处是,事务管理不侵入开发的组件,具体来说,业务逻辑对象就不会意识到正在事务管理之中,事实上也应该如此,因为事务管理是属于系统层面的服务,而不是业务逻辑的一部分,如果想要改变事务管理策划的话,也只需要在[定义文件]中重新配置即可;在不需要事务管理的时候,只要在设定文件上修改一下,即可移去事务管理服务,无需改变代码重新编译,这样维护起来极其方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值