Avatar ·

@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?