149.74K
Category: programmingprogramming

Dependency Injection

1.

Dependency Injection

2.

Что это?
Dependency injection — или же внедрение зависимостей,
это механизм, на котором построен фреймворк Spring.
Так как наши компоненты(они же Bean) совершенно друг о
друге ничего не знают, работать друг с другом они не смогут.
Для того чтобы компоненты начали друг с другом общаться,
используется механизм внедрения зависимостей.
Для этого механизма есть специальная аннотация @Autowired. Если переводить дословно — автоматическое
связывание.

3.

Виды DI
Dependency injection бывает 3 видов:
1) Конструктор.
2) Поле.
3) Сеттер.

4.

Конструктор
При внедрении зависимостей через конструктор, он помечается аннотацией
@Autowired и принимает в себя список параметров — компоненты, которые
будут использоваться в нашем текущем компоненте.
@RestController
@RequestMapping(value = "/users")
public class UserController {
private final UserService userService;
@Autowired
public UserController(UserService userService) {
this.userService = userService;
}
}

5.

Поле
При внедрении зависимости через поле, оно помечается @Autowired и
все. Далее спринг сам внедрит зависимость в это поле.
@RestController
@RequestMapping(value = "/users")
public class UserController {
@Autowired
private UserService userService;
}

6.

Сеттер
При внедрении зависимости через сеттер, @Autowired вешается на сеттер поля.
@RestController
@RequestMapping(value = "/users")
public class UserController {
private UserService userService;
@Autowired
public void setUserService(UserService userService) {
this.userService = userService;
}
}

7.

Внедрение зависимостей это принцип на котором
построен фреймворк Spring. Это самый быстрый и легкий
способ связать компоненты между собой.
English     Русский Rules