Injeção de Dependências - Está correto?

Galera, antes mesmo de procurar sobre esse padrão, eu faço minhas camadas de negócio da seguinte maneira:
Bom, vou mostrar um exemplo simples de como as camadas estão se conectando no meu projeto:

Primeiro, tenho a camada de domínio:

public class DOCliente {

    private Long ID;
    private String nome;
  
    // getters e setters omitidos.

    @Override public void toString() {
        return getNome();
    }
}

Tenho minha camada de Persistência:

public abstract class DAOBase {

    private Connection currentConnection;
    public Connection getCurrentConnection() { 
        return currentConnection; 
    }

    public void setCurrentConnection(Connection currentConnection) { 
        this.currentConnection = currentConnection; 
    }
 
    public DAOBase(Connection currentConnection) {
       setConnection(currentConnection);
    }
}


public class DAOCliente extends DAOBase {
 
    public DAOCliente(Connection currentConnection) {
        super(currentConnection);
    }

    public List<DOCliente> loadCollectionByCriteria(Map<String, Object> criteria) 
    throws SQLException {

        String selectSentence = "SELECT * FROM DBO.CLIENTES";
        PreparedStatement statementSelect = 
            getCurrentConnection().prepareStatement(selectSentence);
        //...
    }
}

Tenho também minha camada de Serviços:

public abstract class DSOBase {

    private Connection currentConnection;
    public Connection getCurrentConnection() { 
        return currentConnection; 
    }

    public void setCurrentConnection(Connection currentConnection) { 
        this.currentConnection = currentConnection; 
    }


    public DSOBase(Connection currentConnection) {
       setConnection(currentConnection);
    }

    public void commitOperations() throws SQLException {
        getCurrentConnection().commit();
    }
    public void rollbackOperations() throws SQLException {
        getCurrentConnection().rollback();
    }
}


public class DSOCliente extends DSOBase {
 
    public DSOCliente(Connection currentConnection) {
        super(currentConnection);
    }

    public List<DOCliente> loadCollectionByCriteria(Map<String, Object> criteria) 
    throws SQLException {

        DAOCliente daoCliente = new DAOCliente(getCurrentConnection());
        return daoCliente.loadCollectionByCriteria(criteria);
    }
}

E minha possível chamada em um método Main:

public class Main {

    public static void main(String[] args) {

        try {

            Connection currentConnection = ConnectionFactory.getConnection();
            DSOCliente dsoCliente = new DSOCliente(currentConnection);

            List<DOCliente> collectionCliente = dsoCliente.loadCollectionByCriteria(null);
            for (DOCliente doCliente : collectionCliente) {

                System.out.println(doCliente);
            }
        }
        catch (SQLException errSQL) {
            errSQL.printStackTrace();
        }
        catch (Exception err) {
            err.printStackTrace();
        }
    }
}

A injeção de dependências funciona desse jeito? Alguém tem uma luz sobre o assunto para me dar?
Grato pela atenção, galera, abraços e fiquem com Deus!

Olá,

Voce está passando uma dependencia para o construtor do objeto de servico para que ele possa ser criado.

Se falarmos no termos dependencia, o seu codigo está fazendo justamente isso, mas injecao de dependecias as coisas mudam um pouco…

O Conceito da DI é o mesmo, prover a dependencia para um objeto, mas quem faz isso não é sua propria classe mais sim o container que injeta a dependencia para o objeto.

Att
Daniel.