Olá Pessoal!
Estou fazendo testes com injeção de dependência a fim de entender melhor e saber diferenciar algumas coisas pra usar corretamente cada coisa no momento certo.
Agora estou estudando e comparando CDI com @Inject e o @Autowired do Spring4, e me surgiram alguma dúvidas.
Bom, eu já entendi que no Spring preciso colocar a notação @Component na minha classe a ser injetada (bean) e que ela tem que ser declarada para que o Spring possa “gerenciar” e usar o @Autowired pra fazer a injeção dessa classe.
Pois bem, usei na mesma classe controler um @Inject pra injetar a classe HttpServeletResquest e funcionou corretamente.
Agora uma coisa que não entendo, porque se eu fizer um @Inject na minha classe que criei e que quero injetar ele não funciona mas um @Inject na classe HttpServletRequest funciona?
Quais as diferenças reais entre @Inject e @Autowired? quando usar uma ou outra?
Posso usar as duas anotações ao mesmo tempo pra injetar classes no meu controller?
Vou escrever o código do que estou testando:
Classe Auxiliar:
@Component
public class Auxiliar() {
public integer soma(int num1, int num2){
return num1+num2;
}
}
Classe Index Contoller:
@Controller
public class IndexContoller() {
@Inject
private HttpServletRequest request;
@Autowired
private Auxiliar aux;
@RequestMapping("/home")
public String home(){
System.err.println("Ip Local: "+ request.getLocalAddr());
System.err.println("Resultado de soma: "+ aux.soma(10,20));
}
}
Esse é um exemplo que fiz usando @Inject e @Autowired no mesmo controler, como eu disse, porque não consigo utilizar @inject Auxiliar aux?
Abraços!