一.Spring Bean的作用域之间有什么区别?
bean的作用域
可以通过scope属性来指定bean的作用域 ,决定这个bean是单实例还是多实例
类别 | 说明 |
---|---|
singleton | 默认值。当IOC容器一创建就会创建bean的实例,而且是单例的,每次得到的都是同一个 |
prototype | 原型的。当IOC容器一创建不再实例化该bean,每次调用getBean()方法时在实例化该bean,而且每调用一次就创建一个新的bean |
request | 每次请求实例化一个bean 该作用域仅使用WebApplicationContext环境 |
session | 在一次会话中共享一个bean 不同的HTTPSession 使用不同的bean 该作用域仅使用WebApplicationContext环境 |
二.简单介绍spring常用的数据库事务传播属性和事务隔离级别?
事务的属性:原子性、隔离性、持久性、一致性
propagation:用来设置事务的传播行为(@Transactional注解 声明式事务)
事务的传播行为:一个方运行在了一个开启事务的方法中时,当前方法使用原来的事物还是开启一个新的事物(共七种)
@Transactional(propagation=Propagation.REQUIRED_NEW)
Propagation.REQUIRED:默认值,使用原来的事务
Propagation.REQUIRED_NEW:将原来的事务挂起,开启一个新的事物
isolation:用来设置事务的隔离级别
一个事务与其他事物隔离的程度成为隔离级别
脏读 不可重复读 幻读
读未提交 READ UNCOMMITTED
读已提交 READ COMMITTED
可重复度 REPEATABLE READ
串行化 SERIALIZABLE
脏读 | 不可重复读 | 幻读 | Oracle | MySQL | |
---|---|---|---|---|---|
读未提交 | 有 | 有 | 有 | × | √ |
读已提交 | 无 | 有 | 有 | √ (默认) | √ |
可重复度 | 无 | 无 | 有 | × | √ (默认) |
串行化 | 无 | 无 | 无 | √ | √ |
@Transactional(propagation=Propagation.REQUIRED_NEW,isolation=Isolation.DEFAULT)
三.在springMVC中如何处理乱码问题?
在web.xml里配置filter
POST乱码解决方法:
<filter>
<filter-name>org.springframework.web.filter.CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>org.springframework.web.filter.CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
GET乱码解决方法:
修改Tomcat的配置文件server.xml
在这个Connector标签里面添加utf-8
<Connector URIEncoding="UTF-8">
四.SpringMVC工作流程
不管处理器方法的返回值设置为ModelAndView还是在方法的入参中传入Map、Model或者ModelMap,SpringMVC都会转换为一个ModelAndView对象
五.MyBatis中当实体类中的属性名和表中字段名不一样怎么办?
1.写sql语句时起别名
select id,last_name lastName,email from employees where id =
#{id}
2.在MyBatis的全局配置文件中开启驼峰命名规则
<settings>
<setting name="mapUnderscoreToCamelCase" value="true" />
</settings>
3.在Mapper映射文件中使用resultMap来自定义映射规则
<select id="get EmpLoyeeById" resultMap= "myMap">
select *from employees where id = #(id)
</select>
<resultMap type= "com.xin.mybatis.entity.Employee" id= "myMap ">
<!--映射主键-- >
<id column= "id" property="id"/>
<!--映射其他列-->
<result column= "last_ name" property= "lastName"/>
<result column= "email " property= "email "/ >
</resultMap>