@Inject e @Autowired no Spring: qual a diferença e o que escolher?
Olá! Comecei a estudar Spring Framework e estou escrevendo minha primeira aplicação. Fiquei confuso com as anotações para injeção de dependências. Vejo que em alguns exemplos usam @Autowired, e em outros, @Inject. Ambas as anotações parecem fazer a mesma coisa: injetar beans em campos, construtores ou setters.
Aqui está um exemplo do meu código, onde uso @Autowired:
```java
@Component
public class UserService {
@Autowired
private UserRepository userRepository;
public User findUser(Long id) {
return userRepository.findById(id);
}
}
```
Mas meu colega disse que é melhor usar @Inject do pacote javax.inject. Ele afirma que é uma abordagem mais "limpa", mas não conseguiu explicar claramente o porquê. Pesquisei e encontrei muitas informações contraditórias. Alguns dizem que não há diferença alguma, outros que @Inject é o padrão Java, enquanto @Autowired é específico do Spring.
Estou interessado nos seguintes pontos:
1. Qual é a diferença fundamental entre essas anotações?