当前位置: 首页>>代码示例>>Java>>正文


Java Enhancer.setInterfaces方法代码示例

本文整理汇总了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());
}
 
开发者ID:syndesisio,项目名称:syndesis,代码行数:20,代码来源:Recordings.java

示例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());
}
 
开发者ID:syndesisio,项目名称:syndesis-rest,代码行数:20,代码来源:Recordings.java

示例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();
   }
 
开发者ID:tkaczmarzyk,项目名称:specification-arg-resolver,代码行数:17,代码来源:EnhancerUtil.java

示例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;
}
 
开发者ID:ttddyy,项目名称:spring-social-evernote,代码行数:23,代码来源:StoreOperationsActualInvocationTest.java

示例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;
}
 
开发者ID:lamsfoundation,项目名称:lams,代码行数:15,代码来源:ConfigurationClassEnhancer.java

示例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;
}
 
开发者ID:langtianya,项目名称:spring4-understanding,代码行数:15,代码来源:ConfigurationClassEnhancer.java

示例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;
}
 
开发者ID:deathspeeder,项目名称:class-guard,代码行数:14,代码来源:ConfigurationClassEnhancer.java

示例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());
	}
}
 
开发者ID:NewTranx,项目名称:newtranx-utils,代码行数:51,代码来源:AccessorScannerConfigurer.java


注:本文中的org.springframework.cglib.proxy.Enhancer.setInterfaces方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。