spring创建SqlSession的scope="request"问题
2016-07-30 14:54
330 查看
昨天在用ssm搭建一个项目,在将
sqlSession的scope设置为"request"时,然后在<span style="font-size:18px;">@Service
public class UserServiceImpl implements UserService{
@Autowired
private UserDao userDao;
@Autowired
private SqlSession sqlSession;
public User findById(int id){
System.out.println("---------"+":"+sqlSession);
return userDao.findById(id);
}
}
</span>service里获取,总是提示
原因:@Service默认是单例模式创建的,而sqlSession对象的声明的是request模式,UserServiceImpl对象的生命周期要比sqlSession的长,在UserServiceImpl对象销毁之前,其属性的值是不能被销毁的!
解决方法:在UserServiceImpl上加上@Scope("reuquest")或@Scope("prototype"),保证生命周期一致或比sqlSession的短。
sqlSession的scope设置为"request"时,然后在<span style="font-size:18px;">@Service
public class UserServiceImpl implements UserService{
@Autowired
private UserDao userDao;
@Autowired
private SqlSession sqlSession;
public User findById(int id){
System.out.println("---------"+":"+sqlSession);
return userDao.findById(id);
}
}
</span>service里获取,总是提示
<span style="font-size:18px;">private SqlSession sqlSession;</span>注入失败!!!!!!我纠结了好久,以为是jar问题或者缺少什么配置,其实不是!网上也查找了很多资料,都没有解决问题!最终从生命周期的角度分析找到了问题的原因!
原因:@Service默认是单例模式创建的,而sqlSession对象的声明的是request模式,UserServiceImpl对象的生命周期要比sqlSession的长,在UserServiceImpl对象销毁之前,其属性的值是不能被销毁的!
解决方法:在UserServiceImpl上加上@Scope("reuquest")或@Scope("prototype"),保证生命周期一致或比sqlSession的短。
相关文章推荐
- 一个jar包里的网站
- 一个jar包里的网站之文件上传
- 一个jar包里的网站之返回对媒体类型
- Spring和ThreadLocal
- Spring Boot 开发微服务
- Spring AOP动态代理-切面
- Spring整合Quartz(JobDetailBean方式)
- Spring整合Quartz(JobDetailBean方式)
- 模拟Spring的简单实现
- Spring整合WebSocket应用示例(上)
- spring+html5实现安全传输随机数字密码键盘
- Spring中属性注入详解
- 监听器获取Spring配置文件的方法
- Spring Boot 定制URL匹配规则的方法
- Java利用Sping框架编写RPC远程过程调用服务的教程
- springmvc 发送ajax出现中文乱码的解决方法汇总
- Spring MVC中Ajax实现二级联动的简单实例
- SpringMVC框架下JQuery传递并解析Json格式的数据是如何实现的
- 详解Java的MyBatis框架和Spring框架的整合运用