shenyu: [Question] In my spring boot project config isFull is true can not register meta data
Question
My config application yml. I use http register type. I do not want to add @ShenyuSpringMvcClient on each controller method, so I try to use isFull. But meta data is not registered.
shenyu:
register:
registerType: http
serverLists: http://localhost:9095
props:
username: admin
password: 123456
client:
http:
props:
contextPath: /user
appName: user
isFull: true
log registerMetaData is false
metadata client register success: {"appName":"user","contextPath":"/user","path":"/user/","rpcType":"http","ruleName":"/user","enabled":true,"pluginNames":[],"registerMetaData":false,"timeMillis":1680074943806,"addPrefixed":false}
org.apache.shenyu.client.springmvc.init.SpringMvcClientEventListener#getBeans don’t set registerMetaData, default is false
@Override
protected Map<String, Object> getBeans(final ApplicationContext context) {
// Filter out
if (Boolean.TRUE.equals(isFull)) {
getPublisher().publishEvent(MetaDataRegisterDTO.builder()
.contextPath(getContextPath())
.addPrefixed(addPrefixed)
.appName(getAppName())
.path(PathUtils.decoratorPathWithSlash(getContextPath()))
.rpcType(RpcTypeEnum.HTTP.getName())
.enabled(true)
.ruleName(getContextPath())
.build());
return null;
}
return context.getBeansWithAnnotation(Controller.class);
}
In org.apache.shenyu.admin.service.register.ShenyuClientRegisterDivideServiceImpl#registerMetadata
protected void registerMetadata(final MetaDataRegisterDTO dto) {
if (dto.isRegisterMetaData()) {
MetaDataService metaDataService = getMetaDataService();
MetaDataDO exist = metaDataService.findByPath(dto.getPath());
metaDataService.saveOrUpdateMetaData(exist, dto);
}
}
I use ShenYu version 2.5.1. So http register type do not support isFull ?????????????
About this issue
- Original URL
- State: closed
- Created a year ago
- Comments: 25 (10 by maintainers)
I know getBeans return null skip register uri. But I need not to use
@ShenyuSpringMvcClientand register all@RequestMqppingvalue I just try to useisFull. Now I know how to do itI think need modifying source code to fix it