feat:清理代码,新版spring支持自动注入,无需手动注入
This commit is contained in:
parent
87316bc592
commit
117ca1e3c4
|
@ -0,0 +1,7 @@
|
||||||
|
package com.flyfish.framework.domain.base;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 占位,标记service
|
||||||
|
*/
|
||||||
|
public interface DomainService {
|
||||||
|
}
|
|
@ -1,15 +1,16 @@
|
||||||
package com.flyfish.framework.beans.meta;
|
package com.flyfish.framework.beans.meta;
|
||||||
|
|
||||||
import com.flyfish.framework.controller.reactive.ReactiveBaseController;
|
|
||||||
import com.flyfish.framework.controller.SafeController;
|
import com.flyfish.framework.controller.SafeController;
|
||||||
|
import com.flyfish.framework.controller.reactive.ReactiveBaseController;
|
||||||
|
import com.flyfish.framework.domain.base.DomainService;
|
||||||
import com.flyfish.framework.domain.base.NameLikeQo;
|
import com.flyfish.framework.domain.base.NameLikeQo;
|
||||||
import com.flyfish.framework.domain.base.Qo;
|
import com.flyfish.framework.domain.base.Qo;
|
||||||
import com.flyfish.framework.domain.base.Vo;
|
import com.flyfish.framework.domain.base.Vo;
|
||||||
import com.flyfish.framework.repository.DefaultReactiveRepository;
|
import com.flyfish.framework.repository.DefaultReactiveRepository;
|
||||||
import com.flyfish.framework.service.BaseReactiveService;
|
|
||||||
import com.flyfish.framework.service.impl.BaseReactiveServiceImpl;
|
import com.flyfish.framework.service.impl.BaseReactiveServiceImpl;
|
||||||
import org.springframework.core.annotation.AliasFor;
|
import org.springframework.core.annotation.AliasFor;
|
||||||
import org.springframework.data.mongodb.core.mapping.Document;
|
import org.springframework.data.mongodb.core.mapping.Document;
|
||||||
|
import org.springframework.data.repository.Repository;
|
||||||
|
|
||||||
import java.lang.annotation.*;
|
import java.lang.annotation.*;
|
||||||
|
|
||||||
|
@ -79,14 +80,14 @@ public @interface RestBean {
|
||||||
*
|
*
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
Class<? extends DefaultReactiveRepository> repoClass() default DefaultReactiveRepository.class;
|
Class<? extends Repository> repoClass() default DefaultReactiveRepository.class;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 服务类,动态生成服务
|
* 服务类,动态生成服务
|
||||||
*
|
*
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
Class<? extends BaseReactiveService> serviceClass() default BaseReactiveServiceImpl.class;
|
Class<? extends DomainService> serviceClass() default BaseReactiveServiceImpl.class;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* controller的类,支持自定义
|
* controller的类,支持自定义
|
||||||
|
|
|
@ -3,13 +3,11 @@ package com.flyfish.framework.beans.resolver;
|
||||||
import com.flyfish.framework.compiler.DynamicJavaCompiler;
|
import com.flyfish.framework.compiler.DynamicJavaCompiler;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.beans.factory.DisposableBean;
|
import org.springframework.beans.factory.DisposableBean;
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
|
||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.web.reactive.result.method.AbstractHandlerMethodMapping;
|
|
||||||
import org.springframework.web.reactive.result.method.annotation.RequestMappingHandlerMapping;
|
|
||||||
|
|
||||||
import java.lang.reflect.Method;
|
import java.util.Collection;
|
||||||
import java.util.*;
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 动态Bean生成解析器
|
* 动态Bean生成解析器
|
||||||
|
@ -18,21 +16,9 @@ import java.util.*;
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Lazy(false)
|
@Lazy(false)
|
||||||
public class DynamicRestBeanResolver implements InitializingBean, DisposableBean {
|
public class DynamicRestBeanResolver implements DisposableBean {
|
||||||
|
|
||||||
private static final List<String> controllers = new ArrayList<>();
|
|
||||||
private static final Map<String, Class<?>> classes = new HashMap<>();
|
private static final Map<String, Class<?>> classes = new HashMap<>();
|
||||||
private final Method handlerRegister;
|
|
||||||
private final RequestMappingHandlerMapping mapping;
|
|
||||||
|
|
||||||
public DynamicRestBeanResolver(RequestMappingHandlerMapping mapping) throws NoSuchMethodException {
|
|
||||||
this.mapping = mapping;
|
|
||||||
this.handlerRegister = AbstractHandlerMethodMapping.class.getDeclaredMethod("detectHandlerMethods", Object.class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void addController(String controller) {
|
|
||||||
controllers.add(controller);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void register(String name, Class<?> clazz) {
|
public static void register(String name, Class<?> clazz) {
|
||||||
classes.put(name, clazz);
|
classes.put(name, clazz);
|
||||||
|
@ -51,14 +37,4 @@ public class DynamicRestBeanResolver implements InitializingBean, DisposableBean
|
||||||
log.info("正在销毁rest自动配置器");
|
log.info("正在销毁rest自动配置器");
|
||||||
DynamicJavaCompiler.delegate().close();
|
DynamicJavaCompiler.delegate().close();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void afterPropertiesSet() throws Exception {
|
|
||||||
log.info("正在注册controller...");
|
|
||||||
for (String bean : controllers) {
|
|
||||||
log.info("注册controller:{}", bean);
|
|
||||||
handlerRegister.setAccessible(true);
|
|
||||||
handlerRegister.invoke(mapping, bean);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,11 +4,8 @@ import com.flyfish.framework.beans.resolver.DynamicRestBeanResolver;
|
||||||
import org.springframework.boot.autoconfigure.web.ServerProperties;
|
import org.springframework.boot.autoconfigure.web.ServerProperties;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.http.server.reactive.ServerHttpRequest;
|
import org.springframework.http.server.reactive.ServerHttpRequest;
|
||||||
import org.springframework.web.reactive.result.method.annotation.RequestMappingHandlerMapping;
|
|
||||||
import org.springframework.web.server.WebFilter;
|
import org.springframework.web.server.WebFilter;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 默认初始化的Bean配置
|
* 默认初始化的Bean配置
|
||||||
*
|
*
|
||||||
|
@ -39,9 +36,8 @@ public class BeanConfig {
|
||||||
|
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public DynamicRestBeanResolver dynamicRestBeanResolver(RequestMappingHandlerMapping requestMappingHandlerMapping)
|
public DynamicRestBeanResolver dynamicRestBeanResolver() {
|
||||||
throws NoSuchMethodException {
|
return new DynamicRestBeanResolver();
|
||||||
return new DynamicRestBeanResolver(requestMappingHandlerMapping);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -104,11 +104,12 @@ public class RestBeanAutoConfigure implements ImportBeanDefinitionRegistrar, Res
|
||||||
.setUri(makePath(clazz.getSimpleName(), restBean.value()));
|
.setUri(makePath(clazz.getSimpleName(), restBean.value()));
|
||||||
// 分别生成实现类,从repo到controller
|
// 分别生成实现类,从repo到controller
|
||||||
templates.forEach((type, template) -> {
|
templates.forEach((type, template) -> {
|
||||||
|
Class<?> superClass = superClasses.getOrDefault(type, noOp).apply(restBean);
|
||||||
// 当且仅当存在vo时,才编译view-controller
|
// 当且仅当存在vo时,才编译view-controller
|
||||||
if (testNotSupport(clazz, type, hasVo)) {
|
if (testNotSupport(superClass, type, hasVo)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
source.setSuperClass(superClasses.getOrDefault(type, noOp).apply(restBean).getCanonicalName());
|
source.setSuperClass(superClass.getCanonicalName());
|
||||||
source.setClassName(clazz.getSimpleName() + type.getName());
|
source.setClassName(clazz.getSimpleName() + type.getName());
|
||||||
try {
|
try {
|
||||||
log.info("尝试注册{}", source.getClassName());
|
log.info("尝试注册{}", source.getClassName());
|
||||||
|
@ -151,10 +152,6 @@ public class RestBeanAutoConfigure implements ImportBeanDefinitionRegistrar, Res
|
||||||
String beanName = StringUtils.uncapitalize(clazz.getSimpleName());
|
String beanName = StringUtils.uncapitalize(clazz.getSimpleName());
|
||||||
log.info("注册bean:{}", beanName);
|
log.info("注册bean:{}", beanName);
|
||||||
registry.registerBeanDefinition(beanName, builder.getBeanDefinition());
|
registry.registerBeanDefinition(beanName, builder.getBeanDefinition());
|
||||||
// 如果是controller,注册
|
|
||||||
if (clazz.getSimpleName().endsWith("Controller")) {
|
|
||||||
DynamicRestBeanResolver.addController(beanName);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -199,7 +196,7 @@ public class RestBeanAutoConfigure implements ImportBeanDefinitionRegistrar, Res
|
||||||
/**
|
/**
|
||||||
* 测试是否支持vo
|
* 测试是否支持vo
|
||||||
*
|
*
|
||||||
* @param clazz 类
|
* @param clazz 父类
|
||||||
* @param type 注入类型
|
* @param type 注入类型
|
||||||
* @param hasVo 是否有vo
|
* @param hasVo 是否有vo
|
||||||
* @return 结果
|
* @return 结果
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.flyfish.framework.service;
|
||||||
|
|
||||||
import com.flyfish.framework.bean.SyncVo;
|
import com.flyfish.framework.bean.SyncVo;
|
||||||
import com.flyfish.framework.domain.base.Domain;
|
import com.flyfish.framework.domain.base.Domain;
|
||||||
|
import com.flyfish.framework.domain.base.DomainService;
|
||||||
import com.flyfish.framework.domain.base.Qo;
|
import com.flyfish.framework.domain.base.Qo;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
|
@ -16,7 +17,7 @@ import java.util.List;
|
||||||
*
|
*
|
||||||
* @author wybab
|
* @author wybab
|
||||||
*/
|
*/
|
||||||
public interface BaseReactiveService<T extends Domain> {
|
public interface BaseReactiveService<T extends Domain> extends DomainService {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询
|
* 查询
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.flyfish.framework.service;
|
||||||
|
|
||||||
import com.flyfish.framework.bean.SyncVo;
|
import com.flyfish.framework.bean.SyncVo;
|
||||||
import com.flyfish.framework.domain.base.Domain;
|
import com.flyfish.framework.domain.base.Domain;
|
||||||
|
import com.flyfish.framework.domain.base.DomainService;
|
||||||
import com.flyfish.framework.domain.base.Qo;
|
import com.flyfish.framework.domain.base.Qo;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
|
@ -16,7 +17,7 @@ import java.util.Optional;
|
||||||
*
|
*
|
||||||
* @param <T> 实体泛型
|
* @param <T> 实体泛型
|
||||||
*/
|
*/
|
||||||
public interface BaseService<T extends Domain> {
|
public interface BaseService<T extends Domain> extends DomainService {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询
|
* 查询
|
||||||
|
|
Loading…
Reference in New Issue