Я и сам изучаю пока что Spring.
Прежде всего рекомендую прочитать книгу Spring in action. Там описаны все возможности DI и их преимущества.
1 - DI property
@Autowired
private SomeClass someClass
2 - DI setter
3 - DI constructor
@Autowired
private final SomeClass someClass;
SomeService (SomeClass someClass) {
this.someClass = someClass;
}
Насчет использования аннотации
@Autowired
Использование этой аннотации необязательно в принципе. Но если например для класса имеется несколько конструкторов, то нужно для одного из них добавить аннотацию.
Я например, в своих pet проектах использую так:
@RequiredArgsConstructor
public class PageController {
private final SomeClass1 someClass1;
private final SomeClass2 someClass2;
private final SomeClass3 someClass3;
}
Т.е. подключаю lombok и использую DI конструктором...