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配置文件中声明式的处理事务来代替代码式的处理事务。这样的好处是,事务管理不侵入开发的组件,具体来说,业务逻辑对象就不会意识到正在事务管理之中,事实上也应该如此,因为事务管理是属于系统层面的服务,而不是业务逻辑的一部分,如果想要改变事务管理策划的话,也只需要在[定义文件]中重新配置即可;在不需要事务管理的时候,只要在设定文件上修改一下,即可移去事务管理服务,无需改变代码重新编译,这样维护起来极其方便。
来源:CSDN
作者:渣渣廖
链接:https://blog.csdn.net/weixin_43865344/article/details/103677435