Picocontainer 2.14.3 и АОП
Я пытаюсь использовать АОП с пикоконтейнером.
пока что я нашел в документации: http://picocontainer.codehaus.org/interception.html
pico = new DefaultPicoContainer();
pico.as(INTERCEPT).addComponent(Apple.class, BraeburnApple.class);
и затем создайте перехватчик, но просматривая код, я нигде не могу найти свойство INTERCEPT.
as получает значение Properties, которое pico реализует в классе характеристик.
У кого-нибудь есть подсказка, или он реализовал это раньше и знает, как с этим справиться?
Спасибо
2 ответа
Похоже, что свойство в этом поведении как-то отсутствует в этой пико-версии, проверьте org.picocontainer.Характеристики в более старых версиях, я действительно надеюсь, что это было где-то реализовано:)
Также в пико есть старый стиль перехвата: http://www.markhneedham.com/blog/2008/11/11/logging-with-pico-container/
Поскольку класс 2.14.3 org.picocontainer.behaviors все еще имеет эти классы, я полагаю, что этот способ в порядке
Это сработало для меня. Сначала создайте прокси, расширив компонент:
public static class ChangeMapInfoEndpointInterceptor extends MapInfoRoutingManagementBean {
@Override
public void setEndpoint(String endpoint) {
System.out.println("setEndpoint called");
}
}
Затем передайте его контейнеру в стиле перехвата:
MutablePicoContainer context = new PicoBuilder().withBehaviors(new Intercepting()).build();
context.addComponent(MapInfoRoutingManagement.class, MapInfoRoutingManagementBean.class);
Intercepted intercepted = context.getComponentAdapter(MapInfoRoutingManagement.class).findAdapterOfType(Intercepted.class);
intercepted.addPostInvocation(MapInfoRoutingManagement.class, new ChangeMapInfoEndpointInterceptor());