Spring小记

1.Spring的aop你怎样实现?

用动态代理和cglib实现,有接口的用动态代理,无接口的用cglib(字节码的一个处理框架)

2.Spring在SSH起什么作用

Spring是一个核心容器,提供依赖注入功能,为大部分框架提供模版,常见的核心类提供初始化,并且整合三层框架

3.Spring容器内部怎么实现的

内部用Map实现,或者说HashMap,把bean的名字放在map的key,bean的实现map的value

4.怎么样理解IOC与AOP

IOC是一种控制反转的思想,降低了对象的耦合度,使得以前对象之间的依赖关系反转过来,
AOP是面向切面编程,非侵入式编程,实现了非业务性编程(公共功能),譬如日志,权限,事务,Jsp里面处理乱码(写一个Filter)等等,一般的Filter都是实现了AOP

5.Spring的事务,事务的作用。

Spring里面的事务分为编程式事务和声明式事务,一般用声明式事务,用来控制数据操作的完整性,一致性

6.Spring的IOC和AOP你在项目中是怎么使用的?

IOC主要来解决对象之间的依赖问题,把所有的bean的依赖关系通过配置文件或者注解关联起来,降低了耦合度,AOP一般用来事务

7.Spring主要使用了什么模式?

工厂模式-->每个Bean的创建通过方法
单例模式-->默认的每个Bean的作用域都是单例
代理模式-->关于AOP的实现是通过代理,体现代理模式

8.Spring bean的作用域.

Scope作用域有4种,常见的有单例或者多例,默认是单例

9.Spring的事务是如何配置的?

第一种方式:每个Bean都有一个代理 

第二种方式:所有Bean共享一个代理基类

第三种方式:使用拦截器

第四种方式:使用tx标签配置的拦截器

第五种方式:全注解

10.你使用过Spring中的哪些技术?

bean的管理,AOP技术,IOC技术 ,事务等

11.为什么要用Spring

降低对象耦合度,让代码更加清晰,提供一些常见的模版

12.说下Spring的注解

1.bean的标记注解
@Component 通用注解 @Repository 持久层注解   @Service 业务层注解  @Controller:表现层注解
2.bean的自动装配注解
@AutoWired 默认是按照类型装配,如果有多个类型实现可以用Qualifier来指定名称
@Resource 默认是按照名称来装配,是JDK里面自带的注解,默认情况下用@AutoWired注解

13.写过类似Spring AOP的操作吗,有哪些通知的?

简单的写过,譬如前置通知,后置通知的方法,环绕通知,事务就是典型的AOP的环绕通知实现

14.Spring的事务在项目中你放在哪个层的?

在业务层加个事务控制,要保证处理业务逻辑的完整性。

15.Spring DI的几种方式

setter注入和构造器注入,一般用setter注入

16.说一下整合Spring的核心监听器。

这个是在SSH整合的时候使用,是整个WEB项目启动的时候初始化Spring的容器. 具体是在web.xml里面配置的ContextLoaderListener,启动的时候就初始化Spring容器

17.Struts2与Spring整合先启动那个容器。

先启动监听器,因为先要初始化容器,初始化容器了以后Action才能从容器里面获得

18.谈谈Spring的IOC和AOP,如果不用Spring,怎么去实现这两个技术。

ioc用反射实现 ,AOP用动态代理实现

19.讲下Spring的七大事务传播属性

有七个,常用有两个REQUIERD, REQUIRED_NEW,REQUIERD表示两个事务的方法调用的时候,前面的时候和后面的合并成一个事务,REQUIRED_NEW是重启一个事务,各干各的

首先,说说什么事务?

事务,就是一组操作数据库的动作集合。事务是现代数据库理论中的核心概念之一。如果一组处理步骤或者全部发生或者一步也不执行,我们称该组处理步骤为一个事务。当所有的步骤像一个操作一样被完整地执行,我们称该事务被提交。由于其中的一部分或多步执行失败,导致没有步骤被提交,则事务必须回滚到最初的系统状态。

其中spring七个事物传播属性: PROPAGATION_REQUIRED-- 支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。 PROPAGATION_SUPPORTS-- 支持当前事务,如果当前没有事务,就以非事务方式执行。 PROPAGATION_MANDATORY-- 支持当前事务,如果当前没有事务,就抛出异常。 PROPAGATION_REQUIRES_NEW-- 新建事务,如果当前存在事务,把当前事务挂起。 PROPAGATION_NOT_SUPPORTED-- 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。 PROPAGATION_NEVER-- 以非事务方式执行,如果当前存在事务,则抛出异常。 PROPAGATION_NESTED-- 如果当前存在事务,则在嵌套事务内执行。如果当前没有事务, 则进行与PROPAGATION_REQUIRED类似的操作。 五个隔离级别: ISOLATION_DEFAULT 这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别. 另外四个与JDBC的隔离级别相对应; ISOLATION_READ_UNCOMMITTED 这是事务最低的隔离级别,它充许别外一个事务可以看到这个事务未提交的数据。 这种隔离级别会产生脏读,不可重复读和幻像读。

ISOLATION_READ_COMMITTED 保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取 该事务未提交的数据。这种事务隔离级别可以避免脏读出现,但是可能会出现不可重复读和幻像读。

ISOLATION_REPEATABLE_READ 这种事务隔离级别可以防止脏读,不可重复读。但是可能出现幻像读。它除了保证 一个事务不能读取另一个事务未提交的数据外,还保证了避免下面的情况产生(不可重复读)

ISOLATION_SERIALIZABLE这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。除了防止脏读, 不可重复读外,还避免了幻像读。 关键词: 1)幻读:事务1读取记录时事务2增加了记录并提交,事务1再次读取时可以看到事务2新增的记录; 2)不可重复读取:事务1读取记录时,事务2更新了记录并提交,事务1再次读取时可以看到事务2修改后的记录; 3)脏读:事务1更新了记录,但没有提交,事务2读取了更新后的行,然后事务T1回滚,现在T2读取无效。

20.事务并发会引起什么问题,怎么解决
    
事务并发会引起脏读,幻读,不可重复读等问题,设定事务的隔离级别就可以解决

21.事务的隔离级别

Spring定义有四种,但是常见的是READ_COMMIT,Oralce有两种实现,MYSql有四种

22.Spring的IOC容器与工厂类有什么区别?

IOC(Inversion of Control)对Bean的控制能力更强,能控制对象自动注入,还可以控制生命周期,而工厂类只是简单的创建一个对象,没有什么控制能力

23.事务的安全问题:锁机制的实现原理及在项目中的使用

 锁有悲观锁和乐观锁,悲观锁一般假设每个人都会修改数据,默认情况下把数据都锁住,影响性能,但安全性高.

乐观锁是假设每个人都只读下数据,不会修改数据,性能比较高,但是安全性较低,一般通过增加类似于版本控制里面版本号来解决问题

24.讲下BeanFactory和ApplicationContext的区别

BeanFactory是Spring容器顶级核心接口,比较早,但功能比较少,getBean就是BeanFactory定义的,

ApplicationContext是Spring里面的另外一个容器顶级接口,它继承于BeanFactory,但是提供的功能譬如校验,国际化,监听,对Bean的管理功能比较多,一般使用ApplicationContext

1.Spring的aop你怎样实现?

用动态代理和cglib实现,有接口的用动态代理,无接口的用cglib(字节码的一个处理框架)

2.Spring在SSH起什么作用

Spring是一个核心容器,提供依赖注入功能,为大部分框架提供模版,常见的核心类提供初始化,并且整合三层框架

3.Spring容器内部怎么实现的

内部用Map实现,或者说HashMap,把bean的名字放在map的key,bean的实现map的value

4.怎么样理解IOC与AOP

IOC是一种控制反转的思想,降低了对象的耦合度,使得以前对象之间的依赖关系反转过来,
AOP是面向切面编程,非侵入式编程,实现了非业务性编程(公共功能),譬如日志,权限,事务,Jsp里面处理乱码(写一个Filter)等等,一般的Filter都是实现了AOP

5.Spring的事务,事务的作用。

Spring里面的事务分为编程式事务和声明式事务,一般用声明式事务,用来控制数据操作的完整性,一致性

6.Spring的IOC和AOP你在项目中是怎么使用的?

IOC主要来解决对象之间的依赖问题,把所有的bean的依赖关系通过配置文件或者注解关联起来,降低了耦合度,AOP一般用来事务

7.Spring主要使用了什么模式?

工厂模式-->每个Bean的创建通过方法
单例模式-->默认的每个Bean的作用域都是单例
代理模式-->关于AOP的实现是通过代理,体现代理模式

8.Spring bean的作用域.

Scope作用域有4种,常见的有单例或者多例,默认是单例

9.Spring的事务是如何配置的?

1. 2. 3.

10.你使用过Spring中的哪些技术?

bean的管理,AOP技术,IOC技术 ,事务等

11.为什么要用Spring

降低对象耦合度,让代码更加清晰,提供一些常见的模版

12.说下Spring的注解

1.bean的标记注解
@Component 通用注解 @Repository 持久层注解   @Service 业务层注解  @Controller:表现层注解
2.bean的自动装配注解
@AutoWired 默认是按照类型装配,如果有多个类型实现可以用Qualifier来指定名称
@Resource 默认是按照名称来装配,是JDK里面自带的注解,默认情况下用@AutoWired注解

13.写过类似Spring AOP的操作吗,有哪些通知的?

简单的写过,譬如前置通知,后置通知的方法,环绕通知,事务就是典型的AOP的环绕通知实现

14.Spring的事务在项目中你放在哪个层的?

在业务层加个事务控制,要保证处理业务逻辑的完整性。

15.Spring DI的几种方式

setter注入和构造器注入,一般用setter注入

16.说一下整合Spring的核心监听器。

这个是在SSH整合的时候使用,是整个WEB项目启动的时候初始化Spring的容器. 具体是在web.xml里面配置的ContextLoaderListener,启动的时候就初始化Spring容器

17.Struts2与Spring整合先启动那个容器。

先启动监听器,因为先要初始化容器,初始化容器了以后Action才能从容器里面获得

18.谈谈Spring的IOC和AOP,如果不用Spring,怎么去实现这两个技术。

ioc用反射实现 ,AOP用动态代理实现

19.讲下Spring的七大事务传播属性

有七个,常用有两个REQUIERD, REQUIRED_NEW,REQUIERD表示两个事务的方法调用的时候,前面的时候和后面的合并成一个事务,REQUIRED_NEW是重启一个事务,各干各的

20.事务并发会引起什么问题,怎么解决
    
事务并发会引起脏读,幻读,不可重复读等问题,设定事务的隔离级别就可以解决

21.事务的隔离级别

Spring定义有四种,但是常见的是READ_COMMIT,Oralce有两种实现,MYSql有四种

22.Spring的IOC容器与工厂类有什么区别?

IOC(Inversion of Control)对Bean的控制能力更强,能控制对象自动注入,还可以控制生命周期,而工厂类只是简单的创建一个对象,没有什么控制能力

23.事务的安全问题:锁机制的实现原理及在项目中的使用

 锁有悲观锁和乐观锁,悲观锁一般假设每个人都会修改数据,默认情况下把数据都锁住,影响性能,但安全性高.

乐观锁是假设每个人都只读下数据,不会修改数据,性能比较高,但是安全性较低,一般通过增加类似于版本控制里面版本号来解决问题

24.讲下BeanFactory和ApplicationContext的区别

BeanFactory是Spring容器顶级核心接口,比较早,但功能比较少,getBean就是BeanFactory定义的,

ApplicationContext是Spring里面的另外一个容器顶级接口,它继承于BeanFactory,但是提供的功能譬如校验,国际化,监听,对Bean的管理功能比较多,一般使用ApplicationContext

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章