Spring复习

Spring复习

1.spring是一个项目管理框架,众多优秀设计模式的结合。

2.springIOC:控制反转,也就是把对象的创建交给Spring容器去创建,而项目本身不在去维护。

3.spring依赖注入的三种方式:set注入、构造器注入(构造方法)、feild注入

4.spring的生命周期:
实例化
属性赋值
初始化
销毁

5.生命周期阶段
单例bean:
随工厂启动创建—》构造方法----》set方法----》init(初始化)—》构建完成—》随工厂关闭销毁

6.代理设计模式
将核心功能与辅助功能(事务、日志、性能监控代码)分离,达到核心业务功能更纯粹、辅助业务功能可复用。

6.1静态代理设计模式
通过代理类的对象,为原始类的对象(目标类的对象)添加辅助功能,更容易更换代理实现类,易于维护。
普通:租户调用房东
代理:租户调用中介调用房东
代理类=实现原始类相同接口+添加辅助功能+调用原始类的业务方法。
service是接口,implservice是委托类,iimplservice是代理类,增强实现方法。

6.2动态代理
6.2.1 JDK动态代理(基于接口)
6.2.2 CGlib动态代理实现(基于继承)
(1)JDK动态代理只能对实现了接口的类生成代理,而不能针对类
(2)CGLIB是针对类实现代理,主要是对指定的类生成一个子类,覆盖其中的方法
因为是继承,所以该类或方法最好不要声明成final

7.spring的AOP(面向切向),剖开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用的模块,并将其命名为Aspect。
简单来说就是那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块之间的耦合度。
应用场景:资源池、同步、事务、内容传递、调试。

7.1 AOP的通知:
前置通知、后置通知、异常通知、环绕通知。
7.2 JDK和Cglib的选择
spring底层:包含了jdk代理和cglib代理两种动态生成机制。
基本规则是:目标业务类如果有接口则用JDk代理,没有接口则用CGlib代理

8.spring的事务
default
read-uncommited 读未提交
read-commited 读提交
repatable read 可重复读
serialized-read 序列化读
特性:
级别越高、多事务并发时、安全性越高;
级别越高、多事务并发时、并发越差;

并发问题:
事务并发时的安全问题:
脏读:一个事务读取到另一个事务还未提交的数据;
不可重复读:一个事务内多次读取一行数据的相同内容,其结果不一致。
幻影读:一个事务内多次读取一张表中的相同内容

  • 如果事务中抛出 RuntimeException,则自动回滚

  • 如果事务中抛出 CheckException(非运行时异常 Exception),不会自动回滚,而是默认提交事务

9.注入

  • @Autowired 基于类型自动注入
  • @Resource 基于名称自动注入
  • @Transactional 事务提交

10.spring的优缺点
优点:方便解耦,简化开发
AOP编程的支持
声明式事务的支持
方便程序的测试
缺点:spring依赖反射,反射影响性能
spring入门时间比较长

11.spring框架都用到了哪些设计模式

  • 工厂模式:BeanFactory就是简单工厂模式的体现,用来创建对象的实例;
  • 单例模式:Bean默认为单例模式。
  • 代理模式:Spring的AOP功能用到了JDK的动态代理和CGLIB字节码生成技术;
  • 模板方法:用来解决代码重复的问题。比如.RestTemplate, JmsTemplate, JpaTemplate。
  • 观察者模式:定义对象键一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知被制动更新,如Spring中listener的实现–ApplicationListener。

12.spring的bean
以@Configuration 注解为例,它用来标记类可以当做一个bean的定义,被Spring IOC容器使用。

另一个例子是@Bean注解,它表示此方法将要返回一个对象,作为一个bean注册进Spring应用上下文。

@Configuration
public class StudentConfig {
    @Bean
    public StudentBean myStudent() {
        return new StudentBean();
    }
}

13.ApplicationContext通常的实现是什么?

  • FileSystemXmlApplicationContext :此容器从一个XML文件中加载beans的定义,XML Bean
    配置文件的全路径名必须提供给它的构造函数。
  • ClassPathXmlApplicationContext:此容器也从一个XML文件中加载beans的定义,这里,你需要正确设置classpath因为这个容器将在classpath里找bean配置。
  • WebXmlApplicationContext:此容器加载一个XML文件,此文件定义了一个WEB应用的所有bean。

14.Beanfactory和Factorybean的区别?
Beanforty是个factory,也就是IOC容器或对象工厂。FactoryBean是个Bean。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值