Picocontainer 2.14.3和AOP

时间:2014-07-23 10:35:28

标签: java picocontainer

我试图将AOP与picocontainer一起使用。

到目前为止,我在文档中找到了: http://picocontainer.codehaus.org/interception.html

pico = new DefaultPicoContainer();  
pico.as(INTERCEPT).addComponent(Apple.class, BraeburnApple.class);  

然后创建拦截器,但查看代码,我无法在任何地方找到INTERCEPT属性。

as接收一个属性值,pico在Characteristics类中实现。

任何人都有线索,或者之前已经实施过,并且知道如何保留它?

由于

2 个答案:

答案 0 :(得分:0)

看起来这个行为的属性在这个pico版本中以某种方式遗漏了,检查旧版本中的org.picocontainer.Characteristics,我真的希望它在某个地方实现:)

在pico中还有用于拦截的旧式方式:http://www.markhneedham.com/blog/2008/11/11/logging-with-pico-container/

由于2.14.3 org.picocontainer.behaviors仍然有这些类,我想这种方式还可以

答案 1 :(得分:0)

这对我有用。首先,通过扩展bean来创建代理:

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