O Spring foi criado para ser um conteiner de injeção de dependências. Assim, ao invés de uma classe instanciar um objeto de outra classe dentro dela, esse objeto é injetado na classe através do construtor, diminuindo o acoplamento entre as classes.
A injeção de dependências do Spring é feita utilizando a anotação @Autowired
no construtor que receberá a dependência. O Spring precisa conhecer o objeto a ser injetado, por isso a classe a ser injetada precisa estar anotada com @Comoponent
. No caso específico do DAO, existe a anotação @Repository
que funciona de maneira igual.
@Controller
class HelloController {
private UserDao dao;
@Autowiried
public HelloConntroller(UserDao dao) {
this.dao = dao;
}
}
@Repository
class UserDao {
// propriedades e métodos…
}