- [x] I have searched the [issues](https://github.com/apache/dubbo/issues) of this repository and believe that this is not a duplicate.
- [x] I have checked the [FAQ](https://github.com/apache/dubbo/blob/master/FAQ.md) of this repository and believe that this is not a duplicate.

### Environment

* Dubbo version: 2.7.3
* Operating System version:  win7
* Java version: jdk8

### Steps to reproduce this issue

1.  define a service Interface like this.
```
public interface HelloBOMService {
  PersonResponseType get(PersonRequestType request) throws Exception;
}
```
2. getServiceDefinition and print Method Parameter
``` 
 ServiceDefinition serviceDefinition = ServiceDefinitionBuilder.build(HelloBOMService.class);
        System.out.println(serviceDefinition.getMethods().get(0).getParameters());
```
3. the methodDefition return  an empty list 

1. Extends TypeBuilder to construct Protobuf typeBuilder and add SPI file.
```
@SPI
public interface TypeBuilder {
```
2. Use serviceDefition.getTypes() to obtains all TypeDefinitions. It is nessary to know which TypeDefinitionBuilder build this TypeDefition.When TypeBuilder generate same ServiceDefinition
use different logic.

### Expected Result
We could get parameter type list from MethodDefition.
We should know which Builder build this TypeDefition.

}
        BUILDERS = builders;
    }
    public static TypeDefinition build(Type type, Class<?> clazz, Map<Class<?>, TypeDefinition> typeCache) {
        TypeBuilder builder = getGenericTypeBuilder(type, clazz);
        TypeDefinition td;
        if (builder != null) {
            td = builder.build(type, clazz, typeCache);
        } else {
            td = DefaultTypeBuilder.build(clazz, typeCache);
        }
        return td;
    }
    private static TypeBuilder getGenericTypeBuilder(Type type, Class<?> clazz) {
        for (TypeBuilder builder : BUILDERS) {
            if (builder.accept(type, clazz)) {
                return builder;
            }
        }
        return null;
    }
    private Map<Class<?>, TypeDefinition> typeCache = new HashMap<>();
    public TypeDefinition build(Type type, Class<?> clazz) {
        return build(type, clazz, typeCache);
    }
    public List<TypeDefinition> getTypeDefinitions() {
        return new ArrayList<>(typeCache.values());
    }
}