Al lavoro uno dei miei colleghi mi ha chiesto di cambiare il modo in cui Spring StoredProcedure classe sottoclasse è stata inizializzata dall'iniettare i parametri con il meccanismo Iniezione di dipendenza (Constructor Injection) a un "più semplice e diretto" .
Il codice effettivo con l'inizializzazione DI assomiglia a:
<constructor-arg><ref bean="datasource"/></constructor-arg>
<constructor-arg value="STOREDPR"></constructor-arg>
<constructor-arg>
<list>
<bean parent="SQL.TIMESTAMP.IN">
<constructor-arg type="java.lang.String" value="parameter1" />
</bean>
<bean parent="SQL.TIMESTAMP.INOUT">
<constructor-arg type="java.lang.String" value="parameter2" />
</bean>
<bean parent="SQL.NUMERIC.IN">
<constructor-arg type="java.lang.String" value="parameter3" />
</bean>
</list>
</constructor-arg>
Sottoclasse del costruttore iniettato StoredProcedure:
public AStoreProcedure(DataSource datasource, String procedureName, List<SqlParameter> params) {
super(datasource, procedureName);
for(SqlParameter p : params)
declareParameter(p);
compile();
}
Secondo me la costruzione di un StoredProcedure con DI non è una cattiva idea dato che puoi cambiare la firma StoreProcedure (parametri dichiarati) senza dover cambiare il codice della tua applicazione, ma semplicemente modificando l'XML ...
Pensi che rimuovere il meccanismo DI in questo caso abbia senso? Quale potrebbe essere una buona alternativa?