- [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.

private String id;
    private String type;
    @SerializedName("items")
    private List<TypeDefinition> items;
    @SerializedName("enum")
    private List<String> enums;
    private String $ref;
    private Map<String, TypeDefinition> properties;
    public TypeDefinition(String type) {
        this.type = type;
    }
    public String get$ref() {
        return $ref;
    }
    public List<String> getEnums() {
        if (enums == null) {
            enums = new ArrayList<String>();
        }
        return enums;
    }
    public String getId() {
        return id;