В hybris есть ли простой способ узнать, какой класс реализации используется для определенного компонента Spring?

Я имею в виду, что я могу переопределить 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>

... так что теперь, когда Spring нужно создать bean-компонент с псевдонимом checkoutFacade, класс реализации будет MyCheckoutFacadeImpl в отличие от переопределенного defaultCheckoutFacade, который был определен в каком-то другом файле конфигурации xml.

Итак, есть ли способ узнать во время выполнения, какой класс реализации используется для определенного определения компонента Spring? Я имею в виду, без отладки кода.

4
Henrique Ordine 13 Янв 2014 в 15:47
Поднимите уровень ведения журнала.
 – 
bmargulies
13 Янв 2014 в 15:53
Org.springframework и отступить?
 – 
bmargulies
13 Янв 2014 в 22:00
Еще одна интересная вещь, которую вы можете сделать с помощью Beanshell, - это выборочное изменение уровней журнала во время выполнения. (Будьте осторожны при производстве - сначала попробуйте это на машине разработчика, потому что он создает очень большой журнал!) org.apache.log4j.Logger.getRootLogger().setLevel(org.apache.log4j.Level.DEBUG); Было бы лучше установить уровень на конкретном регистраторе, а не только в корне, но это всего лишь простой пример .
 – 
Aaron Blenkush
14 Янв 2014 в 21:03

1 ответ

Лучший ответ

Beanshell или Groovy :-)

Проверка реализующего класса bean-компонента - это лишь одна из многих интересных вещей, которые вы можете сделать во время выполнения с помощью Beanshell или Groovy.

Отказ от ответственности: будьте осторожны при запуске кода Beanshell или Groovy на производственной машине!

  • Войдите в HAC и выберите Консоль> Beanshell или Groovy .

  • Выполните следующий код в Beanshell или Groovy, чтобы получить реализующий класс:

    de.hybris.platform.core.Registry.getApplicationContext (). getBean ("checkoutFacade");

Обе консоли покажут результат последнего выражения на вкладке «Результат».

В консоли Groovy для Hybris 5.x просто выполните следующие действия:

checkoutFacade

Как видите, каждый bean-компонент автоматически def добавляется в каждый Groovy-скрипт.

Что касается Beanshell, вы можете создать в Beanshell функцию bean:

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);

В итоге я настолько много использовал Beanshell, что создал собственное приложение-оболочку, которое позволяет мне разрабатывать Beanshell в Eclipse и использовать Eclipse в качестве консоли Beanshell. Но это совсем другой пост!

Ресурсы:

6
Community 20 Июн 2020 в 12:12