我试图将AOP与picocontainer一起使用。
到目前为止,我在文档中找到了: http://picocontainer.codehaus.org/interception.html
pico = new DefaultPicoContainer();
pico.as(INTERCEPT).addComponent(Apple.class, BraeburnApple.class);
然后创建拦截器,但查看代码,我无法在任何地方找到INTERCEPT属性。
as接收一个属性值,pico在Characteristics类中实现。
任何人都有线索,或者之前已经实施过,并且知道如何保留它?
由于
答案 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());