我试图创建像@repository这样的系统。
@Client(uri = "http://example.com", username = "httpBasicUsername", password = "httpBasicPassword")
public interface RequestRepository {
@Request(method = Method.POST, uri = "/mono")
Mono<Response> ex1(Object body);
@Request(method = Method.POST, uri = "/flux")
Flux<Response> ex2(Object body);
}
@Bean
public RequestRepository requestRepository(WebClient.Builder builder) {
return (RequestRepository) Proxy.newProxyInstance(
RequestRepository.class.getClassLoader(),
new Class[]{RequestRepository.class},
new MyDynamicInvocationHandler(builder)
);
}
我已经解决了创建自定义界面扫描器。
欲了解更多详情:https://stackoverflow.com/a/43651431/6841566
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Import({InterfaceScanner.class})
public @interface InterfaceScan {
String[] value() default {};
}
public class InterfaceScanner implements ImportBeanDefinitionRegistrar, EnvironmentAware {
private Environment environment;
@Override
public void setEnvironment(Environment environment) {
this.environment = environment;
}
@Override
public void registerBeanDefinitions(AnnotationMetadata metadata, BeanDefinitionRegistry registry) {
Map<String, Object> annotationAttributes = metadata.getAnnotationAttributes(InterfaceScan.class.getCanonicalName());
if (annotationAttributes != null) {
String[] basePackages = (String[]) annotationAttributes.get("value");
if (basePackages.length == 0)
basePackages = new String[]{((StandardAnnotationMetadata) metadata)
.getIntrospectedClass().getPackage().getName()};
ClassPathScanningCandidateComponentProvider provider =
new ClassPathScanningCandidateComponentProvider(false, environment) {
@Override
protected boolean isCandidateComponent(AnnotatedBeanDefinition beanDefinition) {
AnnotationMetadata meta = beanDefinition.getMetadata();
return meta.isIndependent() && meta.isInterface();
}
};
provider.addIncludeFilter(new AnnotationTypeFilter(Client.class));
for (String basePackage : basePackages)
for (BeanDefinition beanDefinition : provider.findCandidateComponents(basePackage))
registry.registerBeanDefinition(
generateName(beanDefinition.getBeanClassName()),
getProxyBeanDefinition(beanDefinition.getBeanClassName()));
}
}
}
@InterfaceScan
@SpringBootApplication
public class ExampleApplication {
...
}
我尝试了很多事情 be.fgov.minfin.virtualprinter.model.StatusMap中的字段statusDescriptionDao需要一个类型为
主要内容:打开新建Java接口向导,新建Java接口,查看新建的Java接口打开新建Java接口向导 新建 Java 接口向导可用于创建新的 Java 接口。有很多方法可以打开这个向导 : 单击“File”菜单并选择“New”→“Interface”。 右键单击包资源管理器并选择New> Interface。 单击工具栏中的类下拉按钮 ( ) 并选择接口 ( )。 在打开 New Java Interface 向导之前,如果可能,请选择要在其中创建接口的包,以便向导可以自
打开新建 Java 接口向导 新建 Java 接口向导可以创建新的 Java 接口。打开向导的方式有: 点击 File 菜单并选择 New > Interface 在 Package Explorer 窗口中右击鼠标并选择 New > Interface 在工具条上的下拉框按钮中 () 选择 () 在打开创建 Java 接口向导前,最好选择好Java接口所属的包名,这样在创建 Java 接口时包名
把大象装进冰箱分几步?三步:把冰箱门打开,把大象装进去,关门,搞定~ 新建接口分几步?也是三步: 获取权限 找到一个项目 新建接口 搞定~ 获取权限 新用户登录拥有 个人空间 分组下的全部权限,个人空间分组仅自己可见,因此可以在这里任意试用 YApi 的功能。 除此以外没有任何项目或分组的权限,只能浏览已存在分组下面的公开项目。 如果找不到想找的项目,可能是尚未成为项目成员,此时应联系 项目组长
打开“新建Java接口向导” New Java Interface向导可用于创建新的Java接口。 有很多方法可以打开这个向导 - 单击“文件”菜单,然后选择“新建”→“界面”。 右键单击包浏览器并选择“新建”>“界面”。 单击class下拉按钮( )在工具栏中选择界面( )。 在启动New Java Interface向导之前,如果可能,请选择要在其中创建接口的程序包,以便向导可以自动为您填写程