O que exatamente é injeção de campo e como evitá-la?

Eu li em alguns posts sobreSpring MVC ePortlets essa injeção de campo não é recomendada. Porque eu estou tentando conseguir um Então eu me perguntei se estou usandoinjeção de campo e eu não posso responder. Como eu entendoinjeção de campo é se você injetar umBean em um atributo com@Autowired como isso:

CartController.java:

...
@Autowired
private Cart cart;
...

BookshopConfiguartion.java:

@Configuration
public class BookShopConfiguration {

@Bean
public Cart cart(){
    return new Cart();
}
//more configuration

MinhasCart.java é usado para armazenar e fornecer informações sobre os livros no carrinho.

Durante minha pesquisa, li sobreinjeção de construtor:

MyComponent.java:

...
public class MyComponent{
private Cart cart;

@Autowired
public MyComponent(Cart cart){
   this.cart = cart;
}
...

Quais são as vantagens e as desvantagens de ambos os tipos de injeção?

EDIT 1: Como esta pergunta está marcada como duplicada deessa questão eu verifiquei. Porque não há exemplos de código nem na pergunta nem nas respostas que não está claro para mim se estou correto com meu palpite sobre o tipo de injeção que estou usando.

questionAnswers(4)

yourAnswerToTheQuestion