0
我需要訪問通過Guice @Provides提供的實例,所以我正在測試一種方法來通過攔截器訪問@Provides方法......但沒辦法,攔截器從不分散。 此外,我不能改變供應商的方法簽名,事業繼承自另一類....Guice Provider攔截
public class MyModule extends AbstractModule{
public static class MyInterceptor implements MethodInterceptor{
@Override
public Object invoke(final MethodInvocation methodInvocation) throws Throwable {
System.out.println("MyModule ::: [email protected]! : "+ methodInvocation.getMethod().getName());
return methodInvocation.proceed();
}
}
@Provides
StampInterface getStamp(){
StampExampleImpl se = new StampExampleImpl();
se.setId("theID");
se.setTst(System.currentTimeMillis());
return se;
}
@Override
protected void configure() {
bindInterceptor(Matchers.any(),
Matchers.annotatedWith(Provides.class),
new MyInterceptor());
}
public static void main(String... args) {
StampInterface s = Guice.createInjector(new MyModule()).getInstance(StampInterface.class);
System.out.println(s.getTst());
System.out.println("---------------------------");
}
}
我只是需要更新一個「提供的對象」,當它過期。在sigleton作用域中,使用a @ @Provides我得到一個對象...總是相同的(純邏輯!)....我不能使用RequestScope ....所以我試圖通過一個更新對象伎倆......截獲......但我認爲沒有辦法。我知道也許有模型/ arquitecture問題......但我不能改變模型((所以我試圖找到任何詭計來改變它)很難((。非常感謝你 – Azimuts
這是否意味着這個問題是回答?或者您是否需要其他信息?也許最好提出一個新問題來描述您想解決的問題,而不是詢問一個可能的解決方案的細節 –
它問......但好方法是改變模型,這沒有意義,謝謝你。 – Azimuts