美文网首页
SSM spring 1

SSM spring 1

作者: 流光已至 | 来源:发表于2019-05-04 16:45 被阅读0次
1 谈谈你对 Spring 的理解

Spring是一个一站式的分层轻量级框架,为简化企业级应用开发而生,Spring可以使简单javaBean实现以前只有EJB才能实现的功能。
Spring容器的核心:
1 IOC : 在传统的Java模式下,当需要一个对象,我们可以自己使用new 或 getInstance 直接或间接调用构造方法来创建。在spring开发模式下,spring容器使用工厂模式帮我们创建的所需要的对象,不要我们自己创建了,直接调用spring提供的对象就可以了。
2 DI: spring使用javaBean对象的set方法或带参数的构造方法为我们创建所需对象时自动设置其属性为所需要的值的过程。
3 AOP : 在oop思想中,我们将事物纵向抽成一个个对象,在Aop中我们将一个个对象的类似方面横向抽成一个切面。并对这个切面进行一些如:权限控制,事务管理,日志记录的公用操作处理的过程就是面向切面编程。Aop底层是动态代理。

2 BeanFactory 和 ApplicationContext 有什么区别

BeanFactory是spring底层的接口,只提供实例化对象和拿对象的功能
ApplicationContext是一个更高级的Spring容器,提供了更多的功能。
1 支持国际化(MessageSource)
2 访问资源, 如url和文件(ResourceLoader)
3 载入多个上下文(有继承关系),使每一个上下文专注于一个特定的层次,如web应用层。
4 消息发送,响应机制(ApplicationEvevntPublisher)
5 Aop(拦截器)

3 Spring Bean 的生命周期

共八步
1、实例化Bean :BeanFactory容器,
当客户向容器请求一个尚未初始化的bean时,容器就会调
用createBean进行实例化。
ApplicationContext容器,当容器启动结束后,便实例化所 有的bean。
2 、 设置对象属性(依赖注入)
3 、 注入Aware接口(BeanNameAware,BeanFactoryAware,ApplicationContextAware)
4 、如果这个Bean关联了BeanPostProcessor接口,
将会调用postProcessBeforeInitialization(Object obj, String s)方法,
BeanPostProcessor经常被用作是Bean内容的更改,并且由于这个是在Bean初始化结束时调用那个的方法,
也可以被应用于内存或缓存技术;
5、如果Bean在Spring配置文件中配置了init-method属性会自动调用其配置的初始化方法。
6、如果这个Bean关联了BeanPostProcessor接口,将会调用postProcessAfterInitialization(Object obj, String s)方法、;
注:以上工作完成以后就可以应用这个Bean了,那这个Bean是一个Singleton的,所以一般情况下我们调用同一个id的Bean会是在内容地址相同的实例,当然在Spring配置文件中也可以配置非Singleton,这里我们不做赘述。
7、当Bean不再需要时,会经过清理阶段,如果Bean实现了DisposableBean这个接口,会调用那个其实现的destroy()方法;
8、最后,如果这个Bean的Spring配置中配置了destroy-method属性,会自动调用其配置的销毁方法。

4 Spring中Bean的作用域,默认的是哪一个

1 Singleton : 单例,默认
2 protoType : 原型模式,每次getBean都将获得一个新实例
下面的在web应用中才用
3 request: 对于每次http请求,使用request定义的Bean都将产生一个新实例。即每次HTTP请求将会产生不同的Bean实例
4 session,每次会话,同上
5 global session.:全局的web域,类似于servlet中application

5 Spring IOC 如何实现

1 准备配置文件,在配置文件中声明bean的定义,即为bean配置元数据
2 IOC解析元数据
Ioc的BeanReader读取并解析配置文件,生成DefinitionBean配置元数据对象。
根据DefinitionBean实例化,配置,组装bean
3 实例化IOC容器,由客户端实例化,new classPathXmlApplicationContext ,getBean获取所需对象。

6 说说 Spring AOP、Spring AOP 实现原理

AOP : 在oop思想中,我们将事物纵向抽成一个个对象,在Aop中我们将一个个对象的类似方面横向抽成一个切面。并对这个切面进行一些如:权限控制,事务管理,日志记录的公用操作处理的过程就是面向切面编程。Aop底层是动态代理。

7 AOP相关概念

1 切面(Aspect),一个关注点的模块化,事务管理就是一个很好的横切关注点的例子。
2 连接点(JoinPoint) , 程序执行中确定的点,如方法的调用和特定异常的抛出。
3 通知(advise) , 在特定连接点,aop框架执行的动作
4 切入点(PointCut) ,指定通知引发的一系列连接点集合,Aop必须运行开发者指定切入点。
5 目标对象(Target Object),包含连接点的对象,又称被通知或被代理的对象。
6 Aop代理(Aop Proxy) , aop框架创建的对象,包含通知,spring的aop框架可以使用JDK动态代理和cglib代理。

8 动态代理(CGLib 与 JDK)、优缺点、性能对比、如何选择

Jdk代理存在的问题在于目标类被代理的方法必须实现某个接口, Cglib代理则是为了解决这个问题而存在的,其实现代理的方式是通过为目标类动态生成一个子类
Jdk代理生成的代理类只有一个,因而其编译速度是非常快的; 而由于被代理的目标类是动态传入代理类中的, Jdk代理的执行效率相对来说低一点,这也是Jdk代理被称为动态代理的原因;
Cglib代理需要为每个目标类生成相应的子类,因而在实际运行过程中, 其可能会生成非常多的子类,过多的子类始终不是太好的, 因为这影响了虚拟机编译类的效率;但由于在调用过程中,代理类的方法是已经静态编译生成了的, 因而Cglib代理的执行效率相对来说高一些。

相关文章

网友评论

      本文标题:SSM spring 1

      本文链接:https://www.haomeiwen.com/subject/fvctoqtx.html