【发布时间】:2014-10-17 19:24:32
【问题描述】:
我最近安装了 XRebel 插件,它允许您查看当前会话大小。
我发现,第一页加载时会话立即达到 10 mb(身份验证会话 bean 的初始化。)。
我的设置:
我正在使用 JSF 2.2、Spring 4 和 Hibernate 4。
DAO 层 > 服务层 > 托管 Bean
DAO 层
@Named
@Singleton
@Repository
public class UserDao extends BaseDao<User>
{
...
}
服务层
@Service
@Named
@Singleton
public class UserService extends BaseService<User>
{
@Autowired
private UserDao dao;
...
}
我的身份验证会话 bean,在第一页加载时加载
@Named
@Component
@Scope("session")
public class Auth implements Serializable
{
@Autowired
private UserService userService;
...
}
在我正在使用的 applicationContext.xml 中
<context:component-scan base-package="com.mypackage" />
这是我在会话 bean 中自动装配服务 bean 时遇到的一般问题。
Userservice 仅包含检索、保存和删除用户对象的方法,没有包含用户或其他任何内容的 ArrayList。
我的 auth bean 中有两个 @Autowired 服务 - UserService 和 SessionService。
如果我注释掉 UserService,SessionService 将达到相同的大小。如果我将两者都注释掉,则“org.springframework.web.context.request.ServletRequestAttribute...”中的“DestructionCallbackBindingListener”会立即达到 8mb。
我做错了什么?如何减小会话大小?
我很乐意接受任何帮助。
这是一张 XRebel 的图片,显示 userService 在会话中占用大约 8mb 大小。 http://i.stack.imgur.com/TBXx3.png
看XRebel,好像beanFactory是保存在用户会话中的。
【问题讨论】: