A última implementação da HibernateDAOFactory do módulo persist do DCF, agora permite que seus DAOs de entidade possuam propriedades injetadas diretamente do container de beans do Spring.
No exemplo que temos nos testes de projeto, temos o MockDAO, que possui uma propriedade String com nome ‘testeString’:
|
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
public class MockDAO extends HibernateEntityDAO
private String testeString; public MockDAO(SessionFactory sessionFactory) @Override public String getTesteString() @Autowired |
Note que no setter da propriedade, colocamos a anotação @Autowired, para recuperar esta String do container, e também associamos o Qualifier ‘testeString’.
No arquivo de beans do spring, basta adicionarmos um bean String com o id igual ao do qualifier:
|
1
2 3 |
> |
Repare que o valor da String é ‘stringTeste’. Vamos ver em nosso teste agora se tal valor chega corretamente no DAO:
|
1
2 3 4 5 6 7 8 9 10 |
@Test
public void testRightFactory() MockDAO dao = this.getDaoFactory().getDAO(MockEntity.class); Assert.assertNotNull(dao); Assert.assertEquals(this.getDaoFactory(), dao.getDaoFactory()); Assert.assertNotNull(dao.getTesteString()); |
Uma coisa importante a se perceber, é que a chamada da DAOFactory permanece exatamente a mesma, mantendo assim a retro-compatibilidade com as outras versões, e apenas as injeções baseadas em anotações do Spring vão ser consideradas.
NÃO é necessário apontar o component-scan do Spring para o pacote de DAOs de sua aplicação. A injeção de beans adicionais é feita completamente a parte, seguindo o mesmo padrão de nome e de instanciação dos DAOs.
Qualquer dúvida, basta me procurar.
O projeto está no github, dentro do módulo persist do dclick-framework, ou diretamente no nexus da DClick.







