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)

Most upvoted comments

https://github.com/apache/shenyu/issues/4514 You maybe refer to this

I know getBeans return null skip register uri. But I need not to use @ShenyuSpringMvcClient and register all @RequestMqpping value I just try to use isFull. Now I know how to do it

Hi, have you solved your problem?

I think need modifying source code to fix it