我得到“没有找到当前线程的会话”。 我想问题是混合声明性的xml bean和带注释的bean。 接下来,我将恢复配置。
春季3.1.4 Hibernate 4
的applicationContext.xml
<tx:annotation-driven transaction-manager="transactionManager" />
<context:component-scan
base-package="com.mycompany.dao.core, com.mycompany.services.core,
com.mycompany.permissionEvaluator" />
<import resource="model-core-security.xml" />
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
... (sessionFactory ecc...)
模型芯security.xml文件
<bean id="expressionHandler"
class="org.springframework.security.access.expression.method.DefaultMethodSecurityExpressionHandler">
<property name="permissionEvaluator" ref="permissionEvaluator" />
</bean>
<security:global-method-security
pre-post-annotations="enabled">
<security:expression-handler ref="expressionHandler" />
</security:global-method-security>
使用组件扫描我创建bean:AccountService,AccountDAO和PermissionEvaluator。
AccountService.java(com.mycompany.services)
@Service("accountService")
@Transactional
public class AccountServiceImpl implements AccountService {
@Resource
private AccountDAO accountDAO;
...
}
AccountDAO.java(com.mycompany.dao)
@Repository
@Transactional
public class HibernateAccountDAOImpl implements AccountDAO {
...query...
}
(AccountService e AccountDAO是交易性的)
现在,在 AccountController.java 中,我打电话给 accountService.listAccounts(),就可以了!
但是,如果我将AccountService注入PermissionEvaluator类(以下代码段),则在调用 accountService.listAccounts()
时,AccountController会获取找不到当前线程的会话PermissionEvaluator.java(com.mycompany.permissionEvaluator)
Component("permissionEvaluator")
public class PermissionEvaluatorImpl implements PermissionEvaluator {
@Resource
private AccountService accountService;
...
}
我在model-core-security.xml中声明的expressionHandler bean中使用由component-scan创建的PermissionEvaluator(带有AccountService,AccountDAO)。
可能是“找不到当前线程的会话”的原因了吗?
答案 0 :(得分:-1)
@Transactional 什么是你的导入包
import org.springframework.transaction.annotation.Transactional; ??
你可以尝试导入&#34;导入javax.transaction.Transactional;&#34;