第四部分
1.Spring
1.1.描述Spring框架的作用和优点
参考答案:
Spring框架的作用和优点如下:
1.Spring是一个开源的轻量级的应用开发框架,其目的是用于简化企业级应用程序开发,减少侵入;
2.Spring提供的IoC和AOP应用,可以将组建的耦合度降至最低,即解耦,便于系统日后的维护和升级;
3.Spring为系统提供了一个整体的解决方案,开发者可以利用它本身提供的功能外,也可以与第三方框架合计数整合应用,可以自由选择采用哪种技术进行开发.
1.2.如何控制Bean对象的作用域,默认作用域是什么
参考答案:
1.可以通过<bean>
定义的scope属性指定Bean对象的作用域或者使用注解@Scope指定Bean对象的作用域.
2.默认Bean对象的作用域为singleton.
1.3.描述下列注解标记的作用
@Component,@Repository,@Service,@Autowired,@Inject,@Value
参考答案:
1.@Component为通用注解.
2.@Repository为持久层组件注解.
3.@Service为业务层组件注解.
4.@Scope为Bean的作用域注解.
5.@Autowired,@Inject为指定Bean之间依赖关系的注解.
6@Value为注入Spring表达式值的注解.
1.4.描述Spring Web MVC的工作流程
参考答案:
Spring Web MVC的共工作流程如下:
1.浏览器发出spring mvc请求,请求嫁给前端控制器DispatcherServlet处理.
2.控制器通过HandlerMapping维护的请求和Controller映射信息,找到相应的Controller组件处理请求.
3.执行Controller组件约定方法处理请求,在约定方法中可以调用Service和DAO等组件完成数据库操作.约定方法可以返回一个ModelAndView对象,封装了模型数据和视图名称信息.
4.控制器接受ModelAndView之后,调用ViewResolver组件,定位View的JSP并传递Model信息,生成响应界面结果.
1.5.Spring有什么缺点?
参考答案:
Spring有什么缺点如下:
1.jsp中要写很多代码;
2.控制器过于灵活,缺少一个公用控制器;
3.不支持分布式部署.
1.6.Spring中的IOC和AOP是什么含义,它们在项目中起到什么作用,并举例说明
参考答案:
IOC:控制反转,是一种设计模式.一层哈尼是控制权的转移:由传统的在程序中控制依赖转移到由容器来控制;第二层是依赖注入:将相互以来的对象分离,在Spring配置文件中描述他们的依赖关系.他们的依赖关系只在使用的时候才建立.
AOP:面向切面,是一种编程思想,OOP的延续.将系统中非核心的业务提取出来,进行单独处理.
Spring的AOP和IOC在项目中都是为了解决系统代码耦合度过高的问题.使代码重用度高,易于维护.比如事务,日志和安全等.
1.7.简述Spring事务有几种管理方法,写出一种配置方式
参考答案:
Spring事务有两种方式:
1.编程式事务:(代码中嵌入)
2.声明式事务:(注解,XML)
注解方式配置事务的方式如下:
首先,需要在applicationContext.xml中添加启用配置,代码如下所示:
<!-- 定义事务管理器 -->
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactor" ref="sessionFactory">
</bean>
<tx:annotation=driven transaction-manager="txManager"/>
- 1
- 2
- 3
- 4
- 5
然后,使用@Transactional注解,代码如下所示:
@Transactional
public class DefaultFooService implements FooService{
//@Transactional
public void insertFoo(Foo foo){...}
public void updateFoo(Foo foo){...}
}
- 1
- 2
- 3
- 4
- 5
- 6
@Transactional注解标记可以用子安类定义和方法定义前,方法的事务设置将优先于类级别注解的事务设置.
1.8.简单解释一下事务拦截器的实现原理
参考答案:
Spring中的事务管理是通过AOP代理来实现的,被代理对象的每个方法进行来接,在方法执行前启动事务,方法执行完后根据是否有异常和异常的种类进行提交或回滚.
1.9.请说明Spring事务管理中的传播行为和隔离等级
参考答案:
Spring事务的传播行为如下:
1.PROPAGATION_REQUIRED–支持当前事务,如果当前没有事务,就新建一个事务.这是最常见的选择.
2.PROPAGATION_SUPPORTS–支持当前事务,如果当前没有事务,就以非事务方式执行.
3.PROPAGATION_MANDATORY–支持当前事务,如果当前没有事务,就抛出异常.
4.PROPAGATION_REQUIRES_NEW–新建事务,如果当前存在事务,把当前事务挂起.
5.PROPAGATION_NOT_SUPPORTED–以非事务方式执行操作,如果当前存在事务,就把当前事务挂起.
6.PROPAGATION_NEVER–以非事务方式执行,如果当前存在事务,则抛出异常.
7.PROPAGATION_NESTED–如果当前存在事务,则在嵌套事务内执行.如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作.
Spring事务的隔离级别如下:
数据库系统提供了四种事务隔离级别供用户选择.不同的隔离级别采用不同的锁类型来实现,在四种隔离级别中,Serializable的隔离级别最高,ReadUncommitted的隔离级别最低.大多数数据库默认的隔离界别为ReadCommited,如SqlServer,当然也有少部分数据库默认的隔离级别为RepeatableRead,如MySQL.
1.ReadUncommitted:读未提交数据(会出现脏读,不可重复读和幻读).
2.ReadCommited:读已提交数据(会出现不可重复渡河幻读).
3.RepeatableRead:可重复读(会出现幻读).
4.Serializable:串行化.
脏读:一个事务读取到另一个事务未提交的更新数据.
不可重复读:在同一个事务中,多次读取同一个数据返回的结果有所不同.换句话收就是,后续读取可以读到另一事物已提交的更新数据.相反,”可重复读”在同一事物中多次读取数据时,能够保证所读数据一样,也就是,后续读取不能读到另一事务已提交的更新数据.
幻读:一个事务读取到另一个事务已提交的insert数据.
1.10.Spring的Bean有哪些作用域?
参考答案:
Spring的Bean有以下五种作用域:
1.singleton:SpringIOC容器只会创建该Bean的唯一实例;
2.prototype:每次请求都创建一个实例;
3.request:每次HTTP请求都会产生一个新的bean.需要注意的是,该作用域仅在基于Web的Spring ApplicationContext情形下有效,以下的session和global Session也是如此;
4.session:每次回话创建一个实例;
5.global session:全局的HttpSession中,容器会返回该bean的同一个实例.
第四部分
1.Spring
1.1.描述Spring框架的作用和优点
参考答案:
Spring框架的作用和优点如下:
1.Spring是一个开源的轻量级的应用开发框架,其目的是用于简化企业级应用程序开发,减少侵入;
2.Spring提供的IoC和AOP应用,可以将组建的耦合度降至最低,即解耦,便于系统日后的维护和升级;
3.Spring为系统提供了一个整体的解决方案,开发者可以利用它本身提供的功能外,也可以与第三方框架合计数整合应用,可以自由选择采用哪种技术进行开发.
1.2.如何控制Bean对象的作用域,默认作用域是什么
参考答案:
1.可以通过<bean>
定义的scope属性指定Bean对象的作用域或者使用注解@Scope指定Bean对象的作用域.
2.默认Bean对象的作用域为singleton.
1.3.描述下列注解标记的作用
@Component,@Repository,@Service,@Autowired,@Inject,@Value
参考答案:
1.@Component为通用注解.
2.@Repository为持久层组件注解.
3.@Service为业务层组件注解.
4.@Scope为Bean的作用域注解.
5.@Autowired,@Inject为指定Bean之间依赖关系的注解.
6@Value为注入Spring表达式值的注解.
1.4.描述Spring Web MVC的工作流程
参考答案:
Spring Web MVC的共工作流程如下:
1.浏览器发出spring mvc请求,请求嫁给前端控制器DispatcherServlet处理.
2.控制器通过HandlerMapping维护的请求和Controller映射信息,找到相应的Controller组件处理请求.
3.执行Controller组件约定方法处理请求,在约定方法中可以调用Service和DAO等组件完成数据库操作.约定方法可以返回一个ModelAndView对象,封装了模型数据和视图名称信息.
4.控制器接受ModelAndView之后,调用ViewResolver组件,定位View的JSP并传递Model信息,生成响应界面结果.
1.5.Spring有什么缺点?
参考答案:
Spring有什么缺点如下:
1.jsp中要写很多代码;
2.控制器过于灵活,缺少一个公用控制器;
3.不支持分布式部署.
1.6.Spring中的IOC和AOP是什么含义,它们在项目中起到什么作用,并举例说明
参考答案:
IOC:控制反转,是一种设计模式.一层哈尼是控制权的转移:由传统的在程序中控制依赖转移到由容器来控制;第二层是依赖注入:将相互以来的对象分离,在Spring配置文件中描述他们的依赖关系.他们的依赖关系只在使用的时候才建立.
AOP:面向切面,是一种编程思想,OOP的延续.将系统中非核心的业务提取出来,进行单独处理.
Spring的AOP和IOC在项目中都是为了解决系统代码耦合度过高的问题.使代码重用度高,易于维护.比如事务,日志和安全等.
1.7.简述Spring事务有几种管理方法,写出一种配置方式
参考答案:
Spring事务有两种方式:
1.编程式事务:(代码中嵌入)
2.声明式事务:(注解,XML)
注解方式配置事务的方式如下:
首先,需要在applicationContext.xml中添加启用配置,代码如下所示:
<!-- 定义事务管理器 -->
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactor" ref="sessionFactory">
</bean>
<tx:annotation=driven transaction-manager="txManager"/>
- 1
- 2
- 3
- 4
- 5
然后,使用@Transactional注解,代码如下所示:
@Transactional
public class DefaultFooService implements FooService{
//@Transactional
public void insertFoo(Foo foo){...}
public void updateFoo(Foo foo){...}
}
- 1
- 2
- 3
- 4
- 5
- 6
@Transactional注解标记可以用子安类定义和方法定义前,方法的事务设置将优先于类级别注解的事务设置.
1.8.简单解释一下事务拦截器的实现原理
参考答案:
Spring中的事务管理是通过AOP代理来实现的,被代理对象的每个方法进行来接,在方法执行前启动事务,方法执行完后根据是否有异常和异常的种类进行提交或回滚.
1.9.请说明Spring事务管理中的传播行为和隔离等级
参考答案:
Spring事务的传播行为如下:
1.PROPAGATION_REQUIRED–支持当前事务,如果当前没有事务,就新建一个事务.这是最常见的选择.
2.PROPAGATION_SUPPORTS–支持当前事务,如果当前没有事务,就以非事务方式执行.
3.PROPAGATION_MANDATORY–支持当前事务,如果当前没有事务,就抛出异常.
4.PROPAGATION_REQUIRES_NEW–新建事务,如果当前存在事务,把当前事务挂起.
5.PROPAGATION_NOT_SUPPORTED–以非事务方式执行操作,如果当前存在事务,就把当前事务挂起.
6.PROPAGATION_NEVER–以非事务方式执行,如果当前存在事务,则抛出异常.
7.PROPAGATION_NESTED–如果当前存在事务,则在嵌套事务内执行.如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作.
Spring事务的隔离级别如下:
数据库系统提供了四种事务隔离级别供用户选择.不同的隔离级别采用不同的锁类型来实现,在四种隔离级别中,Serializable的隔离级别最高,ReadUncommitted的隔离级别最低.大多数数据库默认的隔离界别为ReadCommited,如SqlServer,当然也有少部分数据库默认的隔离级别为RepeatableRead,如MySQL.
1.ReadUncommitted:读未提交数据(会出现脏读,不可重复读和幻读).
2.ReadCommited:读已提交数据(会出现不可重复渡河幻读).
3.RepeatableRead:可重复读(会出现幻读).
4.Serializable:串行化.
脏读:一个事务读取到另一个事务未提交的更新数据.
不可重复读:在同一个事务中,多次读取同一个数据返回的结果有所不同.换句话收就是,后续读取可以读到另一事物已提交的更新数据.相反,”可重复读”在同一事物中多次读取数据时,能够保证所读数据一样,也就是,后续读取不能读到另一事务已提交的更新数据.
幻读:一个事务读取到另一个事务已提交的insert数据.
1.10.Spring的Bean有哪些作用域?
参考答案:
Spring的Bean有以下五种作用域:
1.singleton:SpringIOC容器只会创建该Bean的唯一实例;
2.prototype:每次请求都创建一个实例;
3.request:每次HTTP请求都会产生一个新的bean.需要注意的是,该作用域仅在基于Web的Spring ApplicationContext情形下有效,以下的session和global Session也是如此;
4.session:每次回话创建一个实例;
5.global session:全局的HttpSession中,容器会返回该bean的同一个实例.