本文整理汇总了Java中org.springframework.cglib.proxy.Enhancer.setInterfaces方法的典型用法代码示例。如果您正苦于以下问题:Java Enhancer.setInterfaces方法的具体用法?Java Enhancer.setInterfaces怎么用?Java Enhancer.setInterfaces使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.springframework.cglib.proxy.Enhancer
的用法示例。
在下文中一共展示了Enhancer.setInterfaces方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: recorder
import org.springframework.cglib.proxy.Enhancer; //导入方法依赖的package包/类
static public <T> T recorder(Object object, Class<T> as) {
if (as.isInterface()) {
// If it's just an interface, use standard java reflect proxying
return as.cast(Proxy.newProxyInstance(as.getClassLoader(), new Class<?>[] { as }, new RecordingInvocationHandler(object)));
}
// If it's a class then use gclib to implement a subclass to implement proxying
RecordingInvocationHandler ih = new RecordingInvocationHandler(object);
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(as);
enhancer.setInterfaces(new Class<?>[]{RecordingProxy.class});
enhancer.setCallback(new org.springframework.cglib.proxy.InvocationHandler() {
@Override
public Object invoke(Object o, Method method, Object[] objects) throws Throwable {
return ih.invoke(o, method, objects);
}
});
return as.cast(enhancer.create());
}
示例2: recorder
import org.springframework.cglib.proxy.Enhancer; //导入方法依赖的package包/类
static public <T> T recorder(Object object, Class<T> as) {
if (as.isInterface()) {
// If it's just an interface, use standard java reflect proxying
return as.cast(Proxy.newProxyInstance(as.getClassLoader(), new Class[]{as}, new RecordingInvocationHandler(object)));
}
// If it's a class then use gclib to implement a subclass to implement proxying
RecordingInvocationHandler ih = new RecordingInvocationHandler(object);
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(as);
enhancer.setInterfaces(new Class[]{RecordingProxy.class});
enhancer.setCallback(new org.springframework.cglib.proxy.InvocationHandler() {
@Override
public Object invoke(Object o, Method method, Object[] objects) throws Throwable {
return ih.invoke(o, method, objects);
}
});
return as.cast(enhancer.create());
}
示例3: wrapWithIfaceImplementation
import org.springframework.cglib.proxy.Enhancer; //导入方法依赖的package包/类
@SuppressWarnings("unchecked")
static <T> T wrapWithIfaceImplementation(final Class<T> iface, final Specification<Object> targetSpec) {
Enhancer enhancer = new Enhancer();
enhancer.setInterfaces(new Class[] { iface });
enhancer.setCallback(new MethodInterceptor() {
@Override
public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {
if ("toString".equals(method.getName())) {
return iface.getSimpleName() + "[" + proxy.invoke(targetSpec, args) + "]";
}
return proxy.invoke(targetSpec, args);
}
});
return (T) enhancer.create();
}
示例4: createUnderlyingObjectProxy
import org.springframework.cglib.proxy.Enhancer; //导入方法依赖的package包/类
private Object createUnderlyingObjectProxy(InvocationReporter invocationReporter) {
// use Cglib Enhancer inlined in spring3.2
// spring3.2's ProxyFactory cannot creates a proxy with constructor arguments.
// CglibAopProxy is package scoped and cannot call "setConstructorArguments" operationMethod.
// This is fixed in spring4 with ObjenesisCglibAopProxy: https://jira.springsource.org/browse/SPR-3150
// for now simulate what spring4 does with cglib and objenesis.
final Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(implClass);
enhancer.setInterfaces(implClass.getInterfaces());
Objenesis objenesis = new ObjenesisStd();
Callback[] callbacks = new Callback[]{invocationReporter};
Class<?>[] types = new Class[callbacks.length];
for (int x = 0; x < types.length; x++) {
types[x] = callbacks[x].getClass();
}
enhancer.setCallbackTypes(types);
Object client = objenesis.newInstance(enhancer.createClass());
((Factory) client).setCallbacks(callbacks);
return client;
}
示例5: newEnhancer
import org.springframework.cglib.proxy.Enhancer; //导入方法依赖的package包/类
/**
* Creates a new CGLIB {@link Enhancer} instance.
*/
private Enhancer newEnhancer(Class<?> superclass) {
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(superclass);
enhancer.setInterfaces(new Class<?>[] {EnhancedConfiguration.class});
enhancer.setUseFactory(false);
enhancer.setNamingPolicy(SpringNamingPolicy.INSTANCE);
enhancer.setStrategy(GENERATOR_STRATEGY);
enhancer.setCallbackFilter(CALLBACK_FILTER);
enhancer.setCallbackTypes(CALLBACK_FILTER.getCallbackTypes());
return enhancer;
}
示例6: newEnhancer
import org.springframework.cglib.proxy.Enhancer; //导入方法依赖的package包/类
/**
* Creates a new CGLIB {@link Enhancer} instance.
*/
private Enhancer newEnhancer(Class<?> superclass, ClassLoader classLoader) {
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(superclass);
enhancer.setInterfaces(new Class<?>[] {EnhancedConfiguration.class});
enhancer.setUseFactory(false);
enhancer.setNamingPolicy(SpringNamingPolicy.INSTANCE);
enhancer.setStrategy(new BeanFactoryAwareGeneratorStrategy(classLoader));
enhancer.setCallbackFilter(CALLBACK_FILTER);
enhancer.setCallbackTypes(CALLBACK_FILTER.getCallbackTypes());
return enhancer;
}
示例7: newEnhancer
import org.springframework.cglib.proxy.Enhancer; //导入方法依赖的package包/类
/**
* Creates a new CGLIB {@link Enhancer} instance.
*/
private Enhancer newEnhancer(Class<?> superclass) {
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(superclass);
enhancer.setInterfaces(new Class<?>[] {EnhancedConfiguration.class});
enhancer.setUseFactory(false);
enhancer.setNamingPolicy(SpringNamingPolicy.INSTANCE);
enhancer.setCallbackFilter(CALLBACK_FILTER);
enhancer.setCallbackTypes(CALLBACK_TYPES);
return enhancer;
}
示例8: postProcessBeanFactory
import org.springframework.cglib.proxy.Enhancer; //导入方法依赖的package包/类
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory context) throws BeansException {
ClassPathScanningCandidateComponentProvider scanner = new ClassPathScanningCandidateComponentProvider(false) {
@Override
protected boolean isCandidateComponent(AnnotatedBeanDefinition beanDefinition) {
return beanDefinition.getMetadata().isInterface();
}
};
scanner.addIncludeFilter(new AnnotationTypeFilter(Accessor.class));
for (BeanDefinition bd : scanner.findCandidateComponents(basePackage)) {
Class<?> accessorCls;
try {
accessorCls = Class.forName(bd.getBeanClassName());
} catch (ClassNotFoundException e) {
throw new AssertionError(e);
}
log.info("Creating proxy accessor: " + accessorCls.getName());
MethodInterceptor interceptor = new MethodInterceptor() {
private final Lazy<?> target = new Lazy<>(() -> {
log.info("Creating actual accessor: " + accessorCls.getName());
Session session;
if (AccessorScannerConfigurer.this.session == null)
session = mainContext.getBean(Session.class);
else
session = AccessorScannerConfigurer.this.session;
MappingManager mappingManager = new MappingManager(session);
return mappingManager.createAccessor(accessorCls);
});
@Override
public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {
if ("toString".equals(method.getName())) {
return accessorCls.getName();
}
return method.invoke(target.get(), args);
}
};
Enhancer enhancer = new Enhancer();
enhancer.setInterfaces(new Class<?>[] { accessorCls });
enhancer.setCallback(interceptor);
Object bean = enhancer.create();
String beanName = StringUtils.uncapitalize(accessorCls.getSimpleName());
context.registerSingleton(beanName, bean);
log.info("Bean registed, name=" + beanName + ", bean=" + bean.toString());
}
}