这是 ManagedBean
@ManagedBean @ViewScoped public class DetailItem {
private static final long serialVersionUID = -7647929779133437125L;
@ManagedProperty(value = "#{itemServiceImpl}")
private ItemService servItem;
这就是服务
@Service("itemServiceImpl") @Transactional(value = "transactionManagerLocal") public class ItemServiceImpl implements ItemService {
private static final long serialVersionUID = 1L;
@Autowired
@Qualifier("itemDaoImpl")
private ItemDAO dao;
但是当我尝试访问使用“DetailItem”的页面时,出现以下异常:
java.io.NotSerializableException: org.springframework.dao.support.PersistenceExceptionTranslationInterceptor java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1164) java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)
为了解决这个问题,我执行了 servItem 瞬态并从 applicationContext 中获取它。但我知道这不是正确的解决方案,而且我找不到其他解决方案。哪种方法才是正确的做法?
我对 sessionscoped 或 requestscoped 没有例外。
听起来像类似的问题,如 ManagedProperty 的序列化
ItemService 是否实现 Serialized,并且 ItemServiceImpl 的所有成员本身都可序列化吗?
将 Spring bean 设置为瞬态属性:
private transient ItemService servItem;