docs: @Override
  	protected DataSource createInstance() throws Exception {
  		DBInstance dbInstance = getDbInstance(getDbInstanceIdentifier());
  
  		// If there is no read replica available, delegate to super class
  		if (dbInstance.getReadReplicaDBInstanceIdentifiers().isEmpty()) {
  			return super.createInstance();
  		}
  
  		HashMap<Object, Object> replicaMap = new HashMap<>(
  				dbInstance.getReadReplicaDBInstanceIdentifiers().size());
  
  		for (String replicaName : dbInstance.getReadReplicaDBInstanceIdentifiers()) {
  			replicaMap.put(replicaName, createDataSourceInstance(replicaName));
  		}
  
  		// Create the data source
  		ReadOnlyRoutingDataSource dataSource = new ReadOnlyRoutingDataSource();
  		dataSource.setTargetDataSources(replicaMap);
  		dataSource.setDefaultTargetDataSource(
  				createDataSourceInstance(getDbInstanceIdentifier()));
  
  		// Initialize the class
  		dataSource.afterPropertiesSet();
  
  		return new LazyConnectionDataSourceProxy(dataSource);
  	}