1.spring事务
spring并不直接管理事务,而是提供了多种事务管理器,将事务的管理职责委托给各种持久层框架
spring的事务分为两种:(1)编程式事务 (2)声明式事务
编程式事务:提供更详细的事务管理,但是会侵入到业务代码
声明式事务:基于AOP,所以既能起到事务管理的作用,又可以不影响业务代码的具体实现
(1)编程式事务:一般使用TransactionTemplate,使用回调方法,把程序从获得和释放资源中释放出来
TransactionTemplate tt = new TransactionTemplate(); // 新建一个TransactionTemplate
Object result = tt.execute(
new TransactionCallback(){
public Object doTransaction(TransactionStatus status){
updateOperation();
return resultOfUpdateOperation();
}
}); // 执行execute方法进行事务管理
(2)声明式事务:可以通过配置的方式,也可以通过注解的方式
1)配置方式
2)注解方式:首先在配置文件中配置事务管理器,再开启注解,然后在需要进行事务管理的类或方法上使用@Transaction
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
2.spring使用什么代理技术?
(1)如果被代理的对象实现了至少一个接口,则使用JDK动态代理
(2)如果没实现接口,则使用cglib代理(通过继承实现代理)
如果要强制使用cglib <aop:config proxy-target-class="true">
3.xml配置文件如何读取properties文件中的内容?
<context:property-placeholder location="classpath:db.properties">
4.Spring中的相关注解有哪些?
(1)类加入容器成bean:@component @controller @service @respository
(2)从容器中拿bean:@Autowired @Qualifier("name") @resource("name")
第一个根据type注入,后两个根据名字注入(不同点时resource是 javaEE注解)
(3)spring mvc注解:@requestmapping 处理请求地址映射
@pathVariable(" ")string id 取出uri变量作为参数
@responseBody 将返回的对象通过转换器转换为适当格式后返回,通常返回json或xml(不再走试图处理器,而是直接写到输出流)
5..servlet生命周期?
(1)加载和初始化 : servlet容器启动时,读取web.xml文件中的信息,构造指定的servlet对象(由<load-决定on-startup>).其余的servlet是在客户端第一次请求的时候创建.初始化调用的是init方法
(2)处理请求:请求到达时运行service方法,service方法运行doget()或dopost请求
(3)当服务器决定销毁实例时调用destory()方法
6.转发和重定向的区别?
转发是服务器接收请求,在内部进行跳转.重定向是服务器返回一个新的url,客户端接到302状态码用新的url 重新进行一次http请求
(1)转发在服务器完成,重定向在客户端完成
(2)转发一次http请求,重定向两次http请求
(3)转发地址栏有变化,重定向没有变化