Ho diverse interfacce semplici con getter e setter e alcuni altri metodi per leggere e scrivere dal file system. Usando direttamente il codice Java, potrei scrivere un singolo "gestore di invocazione" e usarlo per istanziare oggetti per tutte queste interfacce (non l'ho provato, ma penso che potrebbe essere fatto).Implementa un'interfaccia Java utilizzando Spring (AOP?)
Mi chiedo se sia possibile fare lo stesso utilizzando Spring.
Il codice seguente implementa un'interfaccia specifica. Come si può facilmente vedere, lo stesso stesso gestore di invocazione può essere utilizzato per qualsiasi interfaccia.
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class AOPTester {
public static void main(String[] args) {
InvocationHandler handler = new MyInvocationHandler();
AnyInterface proxy = (AnyInterface) Proxy.newProxyInstance(
AnyInterface.class.getClassLoader(),
new Class[] { AnyInterface.class },
handler);
proxy.sayHello();
}
}
interface AnyInterface {
public void sayHello();
}
class MyInvocationHandler implements InvocationHandler{
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("Hello!");
return null;
}
}
Qualcosa di simile qui: [http://stackoverflow.com/questions/34133189/mongodb-dao-sets-all-attributes-to-null-before-save/34160666 ? noredirect = 1] (http://stackoverflow.com/questions/34133189/mongodb-dao-sets-all-attributes-to-null-before-save/34160666?noredirect=1) – Valijon
Mi dispiace @Valijon, I Non vedo perché quell'URL dovrebbe essere in qualche modo correlato con quello che devo fare. –
'Interfacce' non fanno alcuna logica, basta definire il contratto dell'interfaccia di servizio.Quindi, in primo luogo, è necessario definire l'implementazione dell'interfaccia nel codice Java. Quindi, se non si desidera avviare tale implementazione più volte, è possibile recuperare un 'singleton' dal contesto. In quel collegamento, ci sono diverse interfacce, come 'Dao', 'MongoOperations' in cui l'implementazione viene ripristinata dal contesto. Spring ti aiuta solo a iniziare le tue classi, non a definire la sintassi dell'implementazione (come verrebbe compilata in byte-code?) – Valijon