Spring MVC - Injeção de Conexão

Ola,

estou me aprofundando no Spring MVC, e surgiu algo que não sei como fazer pelo Spring, que é injetar a conexão com banco de dados, para uso nos controllers e actions.

Usando Servlet puro, eu simplesmente abria a conexão(Factory) antes de instanciar a action passando-a adiante, pelo construtor…e ao fim a conexão era fechada, permitindo a reu-tilização nos processos realizados na action.

Agora pelo Spring, não sei como fazer este pre handle, criando a Connection, talvez via interceptor …mas como ?

Obrigado.

Você está usando o que ?
O Spring tem suporte a injetar um entity manager, se estiver usando jpa ou um datasource se for jdbc mesmo.

Você tem que configurar o appContext e na classe usar a anotação @Repository

No site do spring com jdbc
http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/jdbc.html

Com framework o/r
http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/orm.html

Estou conectando via JDBC, atualmente estou usando ConnectionFactory para gerar uma conexão.

Então no seu appContext você vê lá no link que eu passei.
Você vai criar um bean que referencia o seu datasource.
Dai na sua classe você cria um atributo da classe datasource e coloca a anotação @Repository que ele vai injetar.

Um exemplo de configuração vai a seguir.

<jee:jndi-lookup id=“dataSource” jndi-name=“jdbc/dsApplication” resource-ref=“true” lookup-on-startup=“true” />

Dai no caso eu pego a configuração do banco apontando para um jndi.

Você vê lá no link que eu passei para setar as opções de banco,usuário e senha ali.

Daí na sua classe você usa a anotação @Repository para dizer que é uma classe que se comunica com o banco e cria um atributo da classe datasource com a anotação @Autowired para ser injetado e usa esse objeto para chamar os métodos como você faria com um preparedStatement e tal.

Depois vê também sobre o rowMapper que ajuda a mapear os resultados de uma consulta.