Seam优化 @In的注意事项

Seam框架中@In注解虽便利但在JSF环境下高频调用getter方法时会导致性能问题。本文介绍两种解决方法:一是使用@BypassInterceptors跳过拦截,二是手动获取组件实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Seam里使用@In来做依赖注入真的很方便
但有一点是需注意的是
在框架调用Bean的任何方法时 @In都会工作
包括在调用getter/setter方法时 万恶吧-_-!

单是Seam还没问题 但配合上JSF框架 问题就来了
JSF对于getter方法的调用频繁程度大家是清楚的
一个稍复杂的页面调用getter方法几百次是很正常的
如果@In了4个组件 注入将达到1000多次
即使@In是内存级的操作 也需要耗费几十毫秒

所以对于那些需要绑定到JSF页面的组件(也就是传说中的action层)
使用@In的时候可要注意了
下面给出两个解决方案:

一、将action层的所有getter/setter方法都用[color=blue]@BypassInterceptors[/color]注释上 跳过自动注入
(PS:打死我也不这么干,还不累死...就算没累死,也被这种代码恶心死了,我采取的是第二种O(∩_∩)O)

二、action层干脆就不使用@In 而是使用

UserManager userManager = (UserManager) Component.getInstance(UserManager.class);

这种手动方式来获取组件

经测试,系统好像真快了... :arrow: (90%是心里作用)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值