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());
Другие вопросы по тегам