Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
package de.tutorials;
import java.lang.reflect.Method;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
public class CglibExample {
/**
* @param args
*/
public static void main(String[] args) {
AbstractFoo foo = generateCGLIBProxyInstanceFor(AbstractFoo.class);
System.out.println(foo.getClass());
foo.bar();
}
private static AbstractFoo generateCGLIBProxyInstanceFor(Class<AbstractFoo> superClazz) {
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(superClazz);
enhancer.setCallback(new MethodInterceptor(){
public Object intercept(Object arg0, Method arg1, Object[] arg2, MethodProxy arg3) throws Throwable {
String name = arg1.getName();
if("bar".equals(name)){
System.out.println("bar");
}
return null;
}
});
return superClazz.cast(enhancer.create());
}
static abstract class AbstractFoo{
public abstract void bar();
}
}
enhancer.setNamingPolicy(new DefaultNamingPolicy(){
@Override
public String getClassName(String arg0, String arg1, Object arg2, Predicate arg3) {
...
package de.tutorials;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class JDKDynamicProxyExample {
/**
* @param args
*/
public static void main(String[] args) {
IFoo foo = (IFoo)Proxy.newProxyInstance(IFoo.class.getClassLoader(),new Class[]{IFoo.class},new InvocationHandler(){
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
String methodName = method.getName();
if("bar".equals(methodName)){
System.out.println("bar");
}
return null;
}
});
foo.bar();
}
static interface IFoo {
void bar();
}
}
Bei Verwendung von Dynamic Proxies (JDK Proxies oder cglib Proxies) bestehen die Klassen nur zur Laufzeit in der JVM. Bei der Verwendung der Hibernate Tools werden die Klassen auch auf dem Filesystem abgelegt. Die dabei generierten Klassen müsste man jedoch u.U. dynamisch zum Classpath hinzufügen.das wäre evtl. eine Möglichkeit. Wo werden die Klassen aber dann abgelegt? Werden überhaupt_Klassen physisch erzeugt oder nur virtuell in der JVM gehalten?