Spring Framework 4.x
Eclipse 4.6 NEON (ok for Eclipse 4.5 MARS)
У цій статті я використовую Maven щоб оголосити бібліотеки Spring які буду використовувати, замість того щоб завантажити Spring і оголошувати бібліотку звичайним способом.
Maven це інструмент який допомагає вам керувати бібліотеками автоматично і ефективно, він набув поширення, що кожен програміст Java повинен знати. Якщо ви не знаєте про Maven ви можете приділити 10 хвилин і вивчити про спосіб використання тут:
У разі якщо ви хочете завантажити Spring і оголосити бібліотеку традиційно, ви можете подивитися анотацію в кінці статті.
2 Spring Framework
Зображення нижче ілюструє структуру Spring Framework.
- IoC Container. Це найважливіша і найголовніша частина, платформа Spring. Він грає роль конфігурації і управління життєвого циклу (Lifecycle) об'єктів java. У сьогоднішній статті ми вивчимо цю частину.
- DAO, ORM, AOP, WEB. Ці модулі є готовими tool або framework інтегровані в Spring.
2.1-Inversion of Control Dependency Injection
Щоб зрозуміти цю ситуація розглянемо деякі класи нижче:
Можна побачити що клас HelloWorldService управляє створення об'єкта HelloWorld.
- У разі вище коли об'єкт HelloWorldService створений від його конструктора (constructor), об'єкт HelloWorld так само створюється, і він створюється від StrutsHelloWorld.
Питання відбудеться в тому, що ви хочете створити об'єкт HelloWorldService одночасно створюється об'єкт HelloWorld. але він повинен бути SpringHelloWorld.
Тому тут HelloWorldService управляє "object creation" в HelloWorld. Чому ми не передаємо створення HelloWorld третій стороні для обробки замість того, щоб створювати його в HelloWorldService. У нас є поняття "inversion of control" тобто "інверсія контролю" (IoC).
І IoC Container буде грати роль управяляющего створює і HelloWorldService і HelloWorld.
IoC = Inversion of Control
IoC Container створює об'єкт HelloWorldService і об'єкт HelloWorld потім передає HelloWorld в HelloWorldService через setter. Робота, яку виконує IoC Container це "впровадження залежності" (Dependency Injection) в HelloWorldService. Залежність тут означає залежність між об'єктами: HelloWorldService і HelloWorld.
Тут ми можемо ясно визначити що таке IoC DI. Давайте замість виконаємо приклад HelloWorld щоб краще зрозуміти.