
```java
 Referred dubbo service org.apache.dubbo.rpc.service.GenericService, dubbo version: 3.0.5-SNAPSHOT
```

```java
if (logger.isInfoEnabled()) {
    logger.info("Referred dubbo service " + interfaceClass.getName());
}
```
public static final Logger logger = LoggerFactory.getLogger(ReferenceConfig.class);
    /**
     * The {@link Protocol} implementation with adaptive functionality,it will be different in different scenarios.
     * A particular {@link Protocol} implementation is determined by the protocol attribute in the {@link URL}.
     * For example:
     *
     * <li>when the url is registry://224.5.6.7:1234/org.apache.dubbo.registry.RegistryService?application=dubbo-sample,
     * then the protocol is <b>RegistryProtocol</b></li>
     *
     * <li>when the url is dubbo://224.5.6.7:1234/org.apache.dubbo.config.api.DemoService?application=dubbo-sample, then
     * the protocol is <b>DubboProtocol</b></li>
     * <p>
     * Actually，when the {@link ExtensionLoader} init the {@link Protocol} instants,it will automatically wrap three
     * layers, and eventually will get a <b>ProtocolSerializationWrapper</b> or <b>ProtocolFilterWrapper</b> or <b>ProtocolListenerWrapper</b>
     */
    private Protocol protocolSPI;
    /**
     * A {@link ProxyFactory} implementation that will generate a reference service's proxy,the JavassistProxyFactory is
     * its default implementation
     */
    private ProxyFactory proxyFactory;
    private ConsumerModel consumerModel;
    /**
     * The interface proxy reference
     */
    private transient volatile T ref;
    /**
     * The invoker of the reference service
     */
    private transient volatile Invoker<?> invoker;