Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Dúvida na Aula 9 - Injeção de dependências

Pessoal boa tarde, gostaria de saber se é possível fazer o spring + hibernate + JPA "conversarem".

Tenho um DataSource configurado no Wildfly (V10.0) de minha máquina. Em outras aplicações sem o spring, consigo delegar para o servidor de aplicação toda a responsabilidade com o banco de dados. Na aplicação com Spring, não consigo fazer o mesmo, preciso configurar as configurações do DataSource (usuário e senha) dentro do spring-context.

Alguém sabe se é possível apenas "dizer" para o spring utilizar o datasource que eu já possuo?

Obrigado.

4 respostas

Oi Iuri, nesse post(https://domineospring.wordpress.com/2015/07/27/spring-security-spring-jpa-e-o-javaee/) que não é diretamente sobre esse assunto, eu explico justamente como pegar um datasource configurado no servidor de aplicação e aproveitar na aplicação com Spring.

Basicamente você vai usar a JNDI pra fazer a ponte.. Sempre que quiser puxar algo do servidor de aplicação, não vai ter jeito, JNDI para dentro.

solução!

Obrigado Alberto, vou dar uma olhada no Artigo.

Não entendi porque colocar a injeção no construtor é mais vantajoso do que apenas colocar no atributo. Exemplo:

private Connection connection;

@Autowired public ContaDao(DataSource ds) { try { this.connection = ds.getConnection(); } catch(SQLException e) { throw new RuntimeException(e); } }

é mais vantajoso que: @Autowired private Connection connection;

Podem me ajudar?

A vantagem da injeção via construtor está ligada a legibilidade do código... por exemplo, se algum ponto do código precisar instanciar o objeto na mão, um teste de unidade por exemplo, ele sabe exatamente o que precisa passar... Outro fator que pode influenciar, é que um programador talvez se incomode com um construtor com muitos parâmetros, enquanto ele pode ficar de boa com uma classe com muitos atributos.