Hen*_*ine 4 hybris spring-bean
在hybris中,是否有一种简单的方法可以知道哪个实现类正在用于某个Spring bean?
我的意思是,我可以通过执行以下操作来覆盖Bean:
<alias name="myCheckoutFacade" alias="checkoutFacade"/>
<bean id="myCheckoutFacade" class="com.pedra.facades.checkout.impl.MyCheckoutFacadeImpl" scope="tenant" parent="defaultCheckoutFacade">
<property name="commerceCheckoutService" ref="myCommerceCheckoutService"/>
</bean>
Run Code Online (Sandbox Code Playgroud)
...所以现在当Spring需要使用别名创建一个bean时,checkoutFacade实现类将MyCheckoutFacadeImpl与defaultCheckoutFacade其他一些xml配置文件中定义的重写相反.
那么有没有办法在运行时知道哪个实现类被用于某个Spring bean定义?不用调试代码,我的意思是.
检查bean的实现类只是运行时使用Beanshell或Groovy可以做的许多很酷的事情之一.
免责声明:在生产机器上小心运行Beanshell或Groovy代码!
登录HAC并转到Console> Beanshell或Groovy
在Beanshell或Groovy中执行以下代码以获取您的实现类:
de.hybris.platform.core.Registry.getApplicationContext()的getBean( "checkoutFacade");
两个控制台都将显示"结果"选项卡中最后一个表达式的结果.
在Hybris 5.x的Groovy控制台中,简单执行以下操作:
checkoutFacade
Run Code Online (Sandbox Code Playgroud)
如您所见,每个bean都自动def进入每个Groovy脚本.
至于Beanshell,你可以bean在Beanshell中创建一个函数:
import de.hybris.platform.core.Registry;
import de.hybris.platform.commercefacades.order.CheckoutFacade;
Object bean(String beanName)
{
return Registry.getApplicationContext().getBean(beanName);
}
CheckoutFacade checkoutFacade = (CheckoutFacade) bean("checkoutFacade");
print(checkoutFacade);
Run Code Online (Sandbox Code Playgroud)
我最终使用Beanshell,以至于我创建了自己的包装器应用程序,允许我在Eclipse中开发Beanshell,并使用Eclipse作为Beanshell控制台.但这是另一篇文章!
资源:
print())| 归档时间: |
|
| 查看次数: |
2213 次 |
| 最近记录: |