{"id":97005,"date":"2025-02-11T14:01:45","date_gmt":"2025-02-11T10:31:45","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/spring-note-002-understanding-ioc-inversion-of-control-di-dependency-injection-2f1f\/"},"modified":"2025-02-11T14:01:45","modified_gmt":"2025-02-11T10:31:45","slug":"spring-note-002-understanding-ioc-inversion-of-control-di-dependency-injection-2f1f","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/spring-note-002-understanding-ioc-inversion-of-control-di-dependency-injection-2f1f\/","title":{"rendered":"\ud83d\udccc \u0628\u0647\u0627\u0631-\u0646\u062a-002: \u062f\u0631\u06a9 IOC (\u0648\u0627\u0631\u0648\u0646\u06af\u06cc \u06a9\u0646\u062a\u0631\u0644) \u0648 DI (\u062a\u0632\u0631\u06cc\u0642 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc)"},"content":{"rendered":"<p>(\u0645\u0631\u062c\u0639: \u0627\u0633\u0646\u0627\u062f \u0628\u0647\u0627\u0631 &#8211; \u0638\u0631\u0641 IOC)  <\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/spring-note-002-understanding-ioc-inversion-of-control-di-dependency-injection-2f1f\/#%F0%9F%94%B9_IOC_%D9%88%D8%A7%D8%B1%D9%88%D9%86%DA%AF%DB%8C_%DA%A9%D9%86%D8%AA%D8%B1%D9%84_%DA%86%DB%8C%D8%B3%D8%AA%D8%9F\" >\ud83d\udd39 IOC (\u0648\u0627\u0631\u0648\u0646\u06af\u06cc \u06a9\u0646\u062a\u0631\u0644) \u0686\u06cc\u0633\u062a\u061f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/spring-note-002-understanding-ioc-inversion-of-control-di-dependency-injection-2f1f\/#%F0%9F%9B%A0_%D9%82%D8%A8%D9%84_%D8%A7%D8%B2_IOC_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D8%B4%DB%8C%D8%A1_%D8%B3%D9%86%D8%AA%DB%8C_%DA%A9%D9%86%D8%AA%D8%B1%D9%84_%D8%AF%D8%B3%D8%AA%DB%8C\" >\ud83d\udee0 \u0642\u0628\u0644 \u0627\u0632 IOC: \u0627\u06cc\u062c\u0627\u062f \u0634\u06cc\u0621 \u0633\u0646\u062a\u06cc (\u06a9\u0646\u062a\u0631\u0644 \u062f\u0633\u062a\u06cc)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/spring-note-002-understanding-ioc-inversion-of-control-di-dependency-injection-2f1f\/#%E2%9A%A1_IOC_%D8%AF%D8%B1_%D8%B9%D9%85%D9%84_%D8%A8%D9%87%D8%A7%D8%B1_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D8%B4%DB%8C%D8%A1_%D8%B1%D8%A7_%DA%A9%D9%86%D8%AA%D8%B1%D9%84_%D9%85%DB%8C_%DA%A9%D9%86%D8%AF\" >\u26a1 IOC \u062f\u0631 \u0639\u0645\u0644: \u0628\u0647\u0627\u0631 \u0627\u06cc\u062c\u0627\u062f \u0634\u06cc\u0621 \u0631\u0627 \u06a9\u0646\u062a\u0631\u0644 \u0645\u06cc \u06a9\u0646\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/spring-note-002-understanding-ioc-inversion-of-control-di-dependency-injection-2f1f\/#%D8%AA%D8%B2%D8%B1%DB%8C%D9%82_%D9%88%D8%A7%D8%A8%D8%B3%D8%AA%DA%AF%DB%8C_DI_%DA%86%DB%8C%D8%B3%D8%AA%D8%9F\" >\u062a\u0632\u0631\u06cc\u0642 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc (DI) \u0686\u06cc\u0633\u062a\u061f<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/spring-note-002-understanding-ioc-inversion-of-control-di-dependency-injection-2f1f\/#%F0%9F%93%8C_%D8%A7%D9%86%D9%88%D8%A7%D8%B9_%D8%AA%D8%B2%D8%B1%DB%8C%D9%82_%D9%88%D8%A7%D8%A8%D8%B3%D8%AA%DA%AF%DB%8C_%D8%AF%D8%B1_%D8%A8%D9%87%D8%A7%D8%B1\" >\ud83d\udccc \u0627\u0646\u0648\u0627\u0639 \u062a\u0632\u0631\u06cc\u0642 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u062f\u0631 \u0628\u0647\u0627\u0631<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/spring-note-002-understanding-ioc-inversion-of-control-di-dependency-injection-2f1f\/#1%E2%83%A3_%D8%AA%D8%B2%D8%B1%DB%8C%D9%82_%D8%B3%D8%A7%D8%B2%D9%86%D8%AF%D9%87_%D8%AA%D9%88%D8%B5%DB%8C%D9%87_%D8%B4%D8%AF%D9%87\" >1\u20e3 \u062a\u0632\u0631\u06cc\u0642 \u0633\u0627\u0632\u0646\u062f\u0647 (\u062a\u0648\u0635\u06cc\u0647 \u0634\u062f\u0647)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/spring-note-002-understanding-ioc-inversion-of-control-di-dependency-injection-2f1f\/#2%E2%83%A3_%D8%AA%D8%B2%D8%B1%DB%8C%D9%82_%D8%AA%D9%86%D8%B8%DB%8C%D9%85_%DA%A9%D9%86%D9%86%D8%AF%D9%87\" >2\u20e3 \u062a\u0632\u0631\u06cc\u0642 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u0646\u062f\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/spring-note-002-understanding-ioc-inversion-of-control-di-dependency-injection-2f1f\/#3%E2%83%A3_%D8%AA%D8%B2%D8%B1%DB%8C%D9%82_%D9%85%DB%8C%D8%AF%D8%A7%D9%86%DB%8C_%D8%AA%D9%88%D8%B5%DB%8C%D9%87_%D9%86%D9%85%DB%8C_%D8%B4%D9%88%D8%AF\" >3\u20e3 \u062a\u0632\u0631\u06cc\u0642 \u0645\u06cc\u062f\u0627\u0646\u06cc (\u062a\u0648\u0635\u06cc\u0647 \u0646\u0645\u06cc \u0634\u0648\u062f)<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-1'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/spring-note-002-understanding-ioc-inversion-of-control-di-dependency-injection-2f1f\/#%F0%9F%93%8C_%D9%BE%D8%B1%D9%88%DA%98%D9%87_%D8%AF%D8%B3%D8%AA%DB%8C_IOC_%D9%88_DI_%D8%AF%D8%B1_%D8%B9%D9%85%D9%84\" >\ud83d\udccc \u067e\u0631\u0648\u0698\u0647 \u062f\u0633\u062a\u06cc: IOC \u0648 DI \u062f\u0631 \u0639\u0645\u0644<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/spring-note-002-understanding-ioc-inversion-of-control-di-dependency-injection-2f1f\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_1_%DB%8C%DA%A9_%D9%BE%D8%B1%D9%88%DA%98%D9%87_%D8%A8%D9%88%D8%AA_%D8%A8%D9%87%D8%A7%D8%B1_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0645\u0631\u062d\u0644\u0647 1: \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u0628\u0648\u062a \u0628\u0647\u0627\u0631 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/spring-note-002-understanding-ioc-inversion-of-control-di-dependency-injection-2f1f\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_2_%D9%85%D8%A4%D9%84%D9%81%D9%87_%D9%87%D8%A7_%D8%B1%D8%A7_%D8%AA%D8%B9%D8%B1%DB%8C%D9%81_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0645\u0631\u062d\u0644\u0647 2: \u0645\u0624\u0644\u0641\u0647 \u0647\u0627 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/nabfollower.com\/blog\/spring-note-002-understanding-ioc-inversion-of-control-di-dependency-injection-2f1f\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_3_%DB%8C%DA%A9_%DA%A9%D9%86%D8%AA%D8%B1%D9%84%D8%B1_%D8%A7%D8%B3%D8%AA%D8%B1%D8%A7%D8%AD%D8%AA_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0645\u0631\u062d\u0644\u0647 3: \u06cc\u06a9 \u06a9\u0646\u062a\u0631\u0644\u0631 \u0627\u0633\u062a\u0631\u0627\u062d\u062a \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/nabfollower.com\/blog\/spring-note-002-understanding-ioc-inversion-of-control-di-dependency-injection-2f1f\/#%D9%85%D8%B1%D8%AD%D9%84%D9%87_4_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D8%B1%D8%A7_%D8%A7%D8%AC%D8%B1%D8%A7_%DA%A9%D9%86%DB%8C%D8%AF\" >\u0645\u0631\u062d\u0644\u0647 4: \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/nabfollower.com\/blog\/spring-note-002-understanding-ioc-inversion-of-control-di-dependency-injection-2f1f\/#%F0%9F%93%8C_%D8%AE%D9%84%D8%A7%D8%B5%D9%87\" >\ud83d\udccc \u062e\u0644\u0627\u0635\u0647<\/a><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"%F0%9F%94%B9_IOC_%D9%88%D8%A7%D8%B1%D9%88%D9%86%DA%AF%DB%8C_%DA%A9%D9%86%D8%AA%D8%B1%D9%84_%DA%86%DB%8C%D8%B3%D8%AA%D8%9F\"><\/span>\n<p>  <strong>\ud83d\udd39 IOC (\u0648\u0627\u0631\u0648\u0646\u06af\u06cc \u06a9\u0646\u062a\u0631\u0644) \u0686\u06cc\u0633\u062a\u061f<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\ud83d\udca1 <strong>IOC \u06cc\u06a9 \u0627\u0635\u0644 \u0637\u0631\u0627\u062d\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u06a9\u0646\u062a\u0631\u0644 \u0627\u06cc\u062c\u0627\u062f \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0634\u06cc \u0627\u0632 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u0647 \u0628\u0647 \u0686\u0627\u0631\u0686\u0648\u0628 (\u0628\u0647\u0627\u0631) \u0645\u0646\u062a\u0642\u0644 \u0645\u06cc \u0634\u0648\u062f.<\/strong>  <\/p>\n<h3><span class=\"ez-toc-section\" id=\"%F0%9F%9B%A0_%D9%82%D8%A8%D9%84_%D8%A7%D8%B2_IOC_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D8%B4%DB%8C%D8%A1_%D8%B3%D9%86%D8%AA%DB%8C_%DA%A9%D9%86%D8%AA%D8%B1%D9%84_%D8%AF%D8%B3%D8%AA%DB%8C\"><\/span>\n<p>  <strong>\ud83d\udee0 \u0642\u0628\u0644 \u0627\u0632 IOC: \u0627\u06cc\u062c\u0627\u062f \u0634\u06cc\u0621 \u0633\u0646\u062a\u06cc (\u06a9\u0646\u062a\u0631\u0644 \u062f\u0633\u062a\u06cc)<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight java\"><code><span class=\"kd\">public<\/span> <span class=\"kd\">class<\/span> <span class=\"nc\">PirateShip<\/span> <span class=\"o\">{<\/span>\n    <span class=\"kd\">private<\/span> <span class=\"nc\">Captain<\/span> <span class=\"n\">captain<\/span><span class=\"o\">;<\/span>\n\n    <span class=\"kd\">public<\/span> <span class=\"nf\">PirateShip<\/span><span class=\"o\">()<\/span> <span class=\"o\">{<\/span>\n        <span class=\"k\">this<\/span><span class=\"o\">.<\/span><span class=\"na\">captain<\/span> <span class=\"o\">=<\/span> <span class=\"k\">new<\/span> <span class=\"nc\">Captain<\/span><span class=\"o\">();<\/span> <span class=\"c1\">\/\/ MANUAL CREATION<\/span>\n    <span class=\"o\">}<\/span>\n<span class=\"o\">}<\/span>\n<\/code><\/pre>\n<\/div>\n<p>\u274c <strong>\u0645\u0634\u06a9\u0644:<\/strong> \u06a9\u0644\u0627\u0633 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u062e\u0627\u0635 \u062e\u0648\u062f \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0645\u0646\u062c\u0631 \u0628\u0647 <strong>\u062c\u0641\u062a \u0634\u062f\u0646<\/strong> (\u0622\u0632\u0645\u0627\u06cc\u0634 \u0648 \u0646\u06af\u0647\u062f\u0627\u0631\u06cc \u0633\u062e\u062a \u062a\u0631).  <\/p>\n<h3><span class=\"ez-toc-section\" id=\"%E2%9A%A1_IOC_%D8%AF%D8%B1_%D8%B9%D9%85%D9%84_%D8%A8%D9%87%D8%A7%D8%B1_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D8%B4%DB%8C%D8%A1_%D8%B1%D8%A7_%DA%A9%D9%86%D8%AA%D8%B1%D9%84_%D9%85%DB%8C_%DA%A9%D9%86%D8%AF\"><\/span>\n<p>  <strong>\u26a1 IOC \u062f\u0631 \u0639\u0645\u0644: \u0628\u0647\u0627\u0631 \u0627\u06cc\u062c\u0627\u062f \u0634\u06cc\u0621 \u0631\u0627 \u06a9\u0646\u062a\u0631\u0644 \u0645\u06cc \u06a9\u0646\u062f<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0628\u0627 IOC \u060c <strong>\u0628\u0647\u0627\u0631 \u0645\u0633\u0626\u0648\u0644 \u0627\u06cc\u062c\u0627\u062f \u0648 \u062a\u0632\u0631\u06cc\u0642 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627 \u0627\u0633\u062a<\/strong> \u0628\u0647 \u062c\u0627\u06cc \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u0647 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0631\u0627 \u0628\u0647 \u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f.\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight java\"><code><span class=\"nd\">@Component<\/span>\n<span class=\"kd\">public<\/span> <span class=\"kd\">class<\/span> <span class=\"nc\">Captain<\/span> <span class=\"o\">{<\/span>\n    <span class=\"kd\">public<\/span> <span class=\"nc\">String<\/span> <span class=\"nf\">getCommand<\/span><span class=\"o\">()<\/span> <span class=\"o\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"s\">\"Set sail, Matey! \u2620\ufe0f\"<\/span><span class=\"o\">;<\/span>\n    <span class=\"o\">}<\/span>\n<span class=\"o\">}<\/span>\n\n<span class=\"nd\">@Component<\/span>\n<span class=\"kd\">public<\/span> <span class=\"kd\">class<\/span> <span class=\"nc\">PirateShip<\/span> <span class=\"o\">{<\/span>\n    <span class=\"kd\">private<\/span> <span class=\"kd\">final<\/span> <span class=\"nc\">Captain<\/span> <span class=\"n\">captain<\/span><span class=\"o\">;<\/span>\n\n    <span class=\"nd\">@Autowired<\/span>\n    <span class=\"kd\">public<\/span> <span class=\"nf\">PirateShip<\/span><span class=\"o\">(<\/span><span class=\"nc\">Captain<\/span> <span class=\"n\">captain<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\n        <span class=\"k\">this<\/span><span class=\"o\">.<\/span><span class=\"na\">captain<\/span> <span class=\"o\">=<\/span> <span class=\"n\">captain<\/span><span class=\"o\">;<\/span>\n    <span class=\"o\">}<\/span>\n\n    <span class=\"kd\">public<\/span> <span class=\"nc\">String<\/span> <span class=\"nf\">sail<\/span><span class=\"o\">()<\/span> <span class=\"o\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"n\">captain<\/span><span class=\"o\">.<\/span><span class=\"na\">getCommand<\/span><span class=\"o\">();<\/span>\n    <span class=\"o\">}<\/span>\n<span class=\"o\">}<\/span>\n<\/code><\/pre>\n<\/div>\n<p>\ud83d\udca1 <strong>\u0628\u0647\u0627\u0631 \u062a\u0632\u0631\u06cc\u0642 \u0645\u06cc \u06a9\u0646\u062f <code>Captain<\/code> \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644 \u0628\u0647 <code>PirateShip<\/code> \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631<\/strong>  <\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D8%AA%D8%B2%D8%B1%DB%8C%D9%82_%D9%88%D8%A7%D8%A8%D8%B3%D8%AA%DA%AF%DB%8C_DI_%DA%86%DB%8C%D8%B3%D8%AA%D8%9F\"><\/span>\n<p>  <strong>\u062a\u0632\u0631\u06cc\u0642 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc (DI) \u0686\u06cc\u0633\u062a\u061f<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\ud83d\udca1 <strong>\u062a\u0632\u0631\u06cc\u0642 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc (DI) \u0627\u06cc\u0646\u06af\u0648\u0646\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647\u0627\u0631 IOC \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0645\u06cc \u06a9\u0646\u062f &#8211; \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0644\u0627\u0632\u0645 \u0631\u0627 \u0628\u0647 \u0627\u0634\u06cc\u0627\u0621 \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc \u06a9\u0646\u062f.<\/strong><\/p>\n<p>\u2705 \u0646\u0647 <code>new<\/code> \u06a9\u0644\u0645\u0647 \u06a9\u0644\u06cc\u062f\u06cc \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0627\u0633\u062a.<\/p>\n<p>\u2705 \u0627\u0634\u06cc\u0627\u0621 \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0647\u0645\u0631\u0627\u0647 \u0647\u0633\u062a\u0646\u062f (\u062a\u0633\u062a \u0648 \u0627\u0635\u0644\u0627\u062d \u0622\u0633\u0627\u0646 \u062a\u0631).<\/p>\n<p>\u2705 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0622\u0633\u0627\u0646\u062a\u0631 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u062d\u0627\u0634\u06cc\u0647 \u0646\u0648\u06cc\u0633\u06cc \u06cc\u0627 XML.  <\/p>\n<h1><span class=\"ez-toc-section\" id=\"%F0%9F%93%8C_%D8%A7%D9%86%D9%88%D8%A7%D8%B9_%D8%AA%D8%B2%D8%B1%DB%8C%D9%82_%D9%88%D8%A7%D8%A8%D8%B3%D8%AA%DA%AF%DB%8C_%D8%AF%D8%B1_%D8%A8%D9%87%D8%A7%D8%B1\"><\/span>\n<p>  <strong>\ud83d\udccc \u0627\u0646\u0648\u0627\u0639 \u062a\u0632\u0631\u06cc\u0642 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u062f\u0631 \u0628\u0647\u0627\u0631<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<p>(\u0645\u0631\u062c\u0639: \u0627\u0633\u0646\u0627\u062f \u0628\u0647\u0627\u0631 &#8211; \u062a\u0632\u0631\u06cc\u0642 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc)  <\/p>\n<h3><span class=\"ez-toc-section\" id=\"1%E2%83%A3_%D8%AA%D8%B2%D8%B1%DB%8C%D9%82_%D8%B3%D8%A7%D8%B2%D9%86%D8%AF%D9%87_%D8%AA%D9%88%D8%B5%DB%8C%D9%87_%D8%B4%D8%AF%D9%87\"><\/span>\n<p>  <strong>1\u20e3 \u062a\u0632\u0631\u06cc\u0642 \u0633\u0627\u0632\u0646\u062f\u0647 (\u062a\u0648\u0635\u06cc\u0647 \u0634\u062f\u0647)<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\ud83d\ude80 <strong>\u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0633\u0627\u0632\u0646\u062f\u0647 \u062a\u0632\u0631\u06cc\u0642 \u06a9\u0646\u06cc\u062f (\u0628\u0647\u062a\u0631\u06cc\u0646 \u062a\u0645\u0631\u06cc\u0646).<\/strong>\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight java\"><code><span class=\"nd\">@Component<\/span>\n<span class=\"kd\">public<\/span> <span class=\"kd\">class<\/span> <span class=\"nc\">PirateShip<\/span> <span class=\"o\">{<\/span>\n    <span class=\"kd\">private<\/span> <span class=\"kd\">final<\/span> <span class=\"nc\">Captain<\/span> <span class=\"n\">captain<\/span><span class=\"o\">;<\/span>\n\n    <span class=\"nd\">@Autowired<\/span>\n    <span class=\"kd\">public<\/span> <span class=\"nf\">PirateShip<\/span><span class=\"o\">(<\/span><span class=\"nc\">Captain<\/span> <span class=\"n\">captain<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span> <span class=\"c1\">\/\/ Injecting dependency via constructor<\/span>\n        <span class=\"k\">this<\/span><span class=\"o\">.<\/span><span class=\"na\">captain<\/span> <span class=\"o\">=<\/span> <span class=\"n\">captain<\/span><span class=\"o\">;<\/span>\n    <span class=\"o\">}<\/span>\n<span class=\"o\">}<\/span>\n<\/code><\/pre>\n<\/div>\n<p>\u2705 <strong>\u0628\u0647\u062a\u0631\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0627\u062c\u0628\u0627\u0631\u06cc.<\/strong><\/p>\n<p>\u2705 <strong>\u0646\u0627\u067e\u0630\u06cc\u0631\u06cc \u0631\u0627 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f (\u0632\u0645\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0646\u0647\u0627\u06cc\u06cc).<\/strong>  <\/p>\n<h3><span class=\"ez-toc-section\" id=\"2%E2%83%A3_%D8%AA%D8%B2%D8%B1%DB%8C%D9%82_%D8%AA%D9%86%D8%B8%DB%8C%D9%85_%DA%A9%D9%86%D9%86%D8%AF%D9%87\"><\/span>\n<p>  <strong>2\u20e3 \u062a\u0632\u0631\u06cc\u0642 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u0646\u062f\u0647<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\ud83d\ude80 <strong>\u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0631\u0648\u0634 \u0647\u0627\u06cc \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u0646\u062f\u0647 \u062a\u0632\u0631\u06cc\u0642 \u06a9\u0646\u06cc\u062f.<\/strong>\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight java\"><code><span class=\"nd\">@Component<\/span>\n<span class=\"kd\">public<\/span> <span class=\"kd\">class<\/span> <span class=\"nc\">PirateShip<\/span> <span class=\"o\">{<\/span>\n    <span class=\"kd\">private<\/span> <span class=\"nc\">Captain<\/span> <span class=\"n\">captain<\/span><span class=\"o\">;<\/span>\n\n    <span class=\"nd\">@Autowired<\/span>\n    <span class=\"kd\">public<\/span> <span class=\"kt\">void<\/span> <span class=\"nf\">setCaptain<\/span><span class=\"o\">(<\/span><span class=\"nc\">Captain<\/span> <span class=\"n\">captain<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span> <span class=\"c1\">\/\/ Setter-based injection<\/span>\n        <span class=\"k\">this<\/span><span class=\"o\">.<\/span><span class=\"na\">captain<\/span> <span class=\"o\">=<\/span> <span class=\"n\">captain<\/span><span class=\"o\">;<\/span>\n    <span class=\"o\">}<\/span>\n<span class=\"o\">}<\/span>\n<\/code><\/pre>\n<\/div>\n<p>\u2705 <strong>\u0628\u0631\u0627\u06cc \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u062e\u0648\u0628 \u0627\u0633\u062a.<\/strong><\/p>\n<p>\u274c <strong>\u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0645\u0646\u062c\u0631 \u0628\u0647 \u0627\u0634\u06cc\u0627\u0621 \u0642\u0627\u0628\u0644 \u062a\u063a\u06cc\u06cc\u0631 (\u0627\u06cc\u0645\u0646 \u062a\u0631) \u0634\u0648\u062f.<\/strong>  <\/p>\n<h3><span class=\"ez-toc-section\" id=\"3%E2%83%A3_%D8%AA%D8%B2%D8%B1%DB%8C%D9%82_%D9%85%DB%8C%D8%AF%D8%A7%D9%86%DB%8C_%D8%AA%D9%88%D8%B5%DB%8C%D9%87_%D9%86%D9%85%DB%8C_%D8%B4%D9%88%D8%AF\"><\/span>\n<p>  <strong>3\u20e3 \u062a\u0632\u0631\u06cc\u0642 \u0645\u06cc\u062f\u0627\u0646\u06cc (\u062a\u0648\u0635\u06cc\u0647 \u0646\u0645\u06cc \u0634\u0648\u062f)<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u26a0 <strong>\u0641\u06cc\u0644\u062f\u0647\u0627\u06cc \u0645\u0633\u062a\u0642\u06cc\u0645 \u062a\u0632\u0631\u06cc\u0642 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code>@Autowired<\/code>\u0628\u0634\u0631<\/strong>\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight java\"><code><span class=\"nd\">@Component<\/span>\n<span class=\"kd\">public<\/span> <span class=\"kd\">class<\/span> <span class=\"nc\">PirateShip<\/span> <span class=\"o\">{<\/span>\n    <span class=\"nd\">@Autowired<\/span>\n    <span class=\"kd\">private<\/span> <span class=\"nc\">Captain<\/span> <span class=\"n\">captain<\/span><span class=\"o\">;<\/span>\n<span class=\"o\">}<\/span>\n<\/code><\/pre>\n<\/div>\n<p>\u274c <strong>\u06cc\u06a9 \u0639\u0645\u0644 \u0628\u062f \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a \u0632\u06cc\u0631\u0627:<\/strong>  <\/p>\n<ul>\n<li>\u0622\u0632\u0645\u0627\u06cc\u0634 \u0633\u062e\u062a \u062a\u0631 (\u0647\u06cc\u0686 \u0631\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u0639\u0628\u0648\u0631 \u0627\u0632 \u0645\u0633\u062e\u0631\u0647 \u062f\u0631 \u062a\u0633\u062a \u0647\u0627 \u0646\u06cc\u0633\u062a).\n<\/li>\n<li>\u062a\u063a\u06cc\u06cc\u0631 \u0646\u0627\u067e\u0630\u06cc\u0631\u06cc (\u062d\u0627\u0644\u062a \u06a9\u0644\u0627\u0633 \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u0645\u06cc \u062f\u0647\u062f).\n<\/li>\n<\/ul>\n<p><strong>\ud83d\udd25 \u0628\u0647\u062a\u0631\u06cc\u0646 \u062a\u0645\u0631\u06cc\u0646: \u0647\u0631 \u0632\u0645\u0627\u0646 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0627\u0632 \u062a\u0632\u0631\u06cc\u0642 \u0633\u0627\u0632\u0646\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f!<\/strong>  <\/p>\n<h1><span class=\"ez-toc-section\" id=\"%F0%9F%93%8C_%D9%BE%D8%B1%D9%88%DA%98%D9%87_%D8%AF%D8%B3%D8%AA%DB%8C_IOC_%D9%88_DI_%D8%AF%D8%B1_%D8%B9%D9%85%D9%84\"><\/span>\n<p>  <strong>\ud83d\udccc \u067e\u0631\u0648\u0698\u0647 \u062f\u0633\u062a\u06cc: IOC \u0648 DI \u062f\u0631 \u0639\u0645\u0644<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h1>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_1_%DB%8C%DA%A9_%D9%BE%D8%B1%D9%88%DA%98%D9%87_%D8%A8%D9%88%D8%AA_%D8%A8%D9%87%D8%A7%D8%B1_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  <strong>\u0645\u0631\u062d\u0644\u0647 1: \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u0628\u0648\u062a \u0628\u0647\u0627\u0631 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>1\u20e3 <strong>\u0628\u0647 Spring Initializr \u0628\u0631\u0648\u06cc\u062f<\/strong><\/p>\n<p>2\u20e3 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f:<\/p>\n<ul>\n<li>\n<strong>\u0646\u0633\u062e\u0647 \u0628\u0648\u062a \u0628\u0647\u0627\u0631:<\/strong> \u0622\u062e\u0631\u06cc\u0646 \u067e\u0627\u06cc\u062f\u0627\u0631\n<\/li>\n<li>\n<strong>\u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627:<\/strong> \u0648\u0628 \u0628\u0647\u0627\u0631\n<\/li>\n<li>\n<strong>\u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc:<\/strong> jar 3\u20e3 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f <strong>\u062a\u0648\u0644\u06cc\u062f \u06a9\u0631\u062f\u0646<\/strong> \u0648 \u067e\u0631\u0648\u0646\u062f\u0647 zip \u0631\u0627 \u0627\u0633\u062a\u062e\u0631\u0627\u062c \u06a9\u0646\u06cc\u062f.\n<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_2_%D9%85%D8%A4%D9%84%D9%81%D9%87_%D9%87%D8%A7_%D8%B1%D8%A7_%D8%AA%D8%B9%D8%B1%DB%8C%D9%81_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  <strong>\u0645\u0631\u062d\u0644\u0647 2: \u0645\u0624\u0644\u0641\u0647 \u0647\u0627 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u062f<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\ud83d\udccc <strong>\u0627\u06cc\u062c\u0627\u062f a <code>Captain<\/code> \u0645\u0624\u0644\u0641\u0647:<\/strong>\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight java\"><code><span class=\"kn\">package<\/span> <span class=\"nn\">com.example.springdi<\/span><span class=\"o\">;<\/span>\n\n<span class=\"kn\">import<\/span> <span class=\"nn\">org.springframework.stereotype.Component<\/span><span class=\"o\">;<\/span>\n\n<span class=\"nd\">@Component<\/span>\n<span class=\"kd\">public<\/span> <span class=\"kd\">class<\/span> <span class=\"nc\">Captain<\/span> <span class=\"o\">{<\/span>\n    <span class=\"kd\">public<\/span> <span class=\"nc\">String<\/span> <span class=\"nf\">giveOrder<\/span><span class=\"o\">()<\/span> <span class=\"o\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"s\">\"All hands on deck, Matey! \u2620\ufe0f\"<\/span><span class=\"o\">;<\/span>\n    <span class=\"o\">}<\/span>\n<span class=\"o\">}<\/span>\n<\/code><\/pre>\n<\/div>\n<p>\ud83d\udccc <strong>\u0627\u06cc\u062c\u0627\u062f a <code>PirateShip<\/code> \u0645\u0624\u0644\u0641\u0647 \u0627\u06cc \u06a9\u0647 \u0628\u0647 \u0622\u0646 \u0628\u0633\u062a\u06af\u06cc \u062f\u0627\u0631\u062f <code>Captain<\/code>:<\/strong>\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight java\"><code><span class=\"kn\">package<\/span> <span class=\"nn\">com.example.springdi<\/span><span class=\"o\">;<\/span>\n\n<span class=\"kn\">import<\/span> <span class=\"nn\">org.springframework.stereotype.Component<\/span><span class=\"o\">;<\/span>\n\n<span class=\"nd\">@Component<\/span>\n<span class=\"kd\">public<\/span> <span class=\"kd\">class<\/span> <span class=\"nc\">PirateShip<\/span> <span class=\"o\">{<\/span>\n    <span class=\"kd\">private<\/span> <span class=\"kd\">final<\/span> <span class=\"nc\">Captain<\/span> <span class=\"n\">captain<\/span><span class=\"o\">;<\/span>\n\n    <span class=\"kd\">public<\/span> <span class=\"nf\">PirateShip<\/span><span class=\"o\">(<\/span><span class=\"nc\">Captain<\/span> <span class=\"n\">captain<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\n        <span class=\"k\">this<\/span><span class=\"o\">.<\/span><span class=\"na\">captain<\/span> <span class=\"o\">=<\/span> <span class=\"n\">captain<\/span><span class=\"o\">;<\/span>\n    <span class=\"o\">}<\/span>\n\n    <span class=\"kd\">public<\/span> <span class=\"nc\">String<\/span> <span class=\"nf\">sail<\/span><span class=\"o\">()<\/span> <span class=\"o\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"n\">captain<\/span><span class=\"o\">.<\/span><span class=\"na\">giveOrder<\/span><span class=\"o\">();<\/span>\n    <span class=\"o\">}<\/span>\n<span class=\"o\">}<\/span>\n<\/code><\/pre>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_3_%DB%8C%DA%A9_%DA%A9%D9%86%D8%AA%D8%B1%D9%84%D8%B1_%D8%A7%D8%B3%D8%AA%D8%B1%D8%A7%D8%AD%D8%AA_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  <strong>\u0645\u0631\u062d\u0644\u0647 3: \u06cc\u06a9 \u06a9\u0646\u062a\u0631\u0644\u0631 \u0627\u0633\u062a\u0631\u0627\u062d\u062a \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u062f<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\ud83d\udccc <strong>\u0627\u0641\u0634\u0627\u06cc <code>PirateShip<\/code> \u0631\u0641\u062a\u0627\u0631 \u0627\u0632 \u0637\u0631\u06cc\u0642 API:<\/strong>\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight java\"><code><span class=\"kn\">package<\/span> <span class=\"nn\">com.example.springdi.controller<\/span><span class=\"o\">;<\/span>\n\n<span class=\"kn\">import<\/span> <span class=\"nn\">com.example.springdi.PirateShip<\/span><span class=\"o\">;<\/span>\n<span class=\"kn\">import<\/span> <span class=\"nn\">org.springframework.web.bind.annotation.GetMapping<\/span><span class=\"o\">;<\/span>\n<span class=\"kn\">import<\/span> <span class=\"nn\">org.springframework.web.bind.annotation.RequestMapping<\/span><span class=\"o\">;<\/span>\n<span class=\"kn\">import<\/span> <span class=\"nn\">org.springframework.web.bind.annotation.RestController<\/span><span class=\"o\">;<\/span>\n\n<span class=\"nd\">@RestController<\/span>\n<span class=\"nd\">@RequestMapping<\/span><span class=\"o\">(<\/span><span class=\"s\">\"\/pirates\"<\/span><span class=\"o\">)<\/span>\n<span class=\"kd\">public<\/span> <span class=\"kd\">class<\/span> <span class=\"nc\">PirateController<\/span> <span class=\"o\">{<\/span>\n    <span class=\"kd\">private<\/span> <span class=\"kd\">final<\/span> <span class=\"nc\">PirateShip<\/span> <span class=\"n\">pirateShip<\/span><span class=\"o\">;<\/span>\n\n    <span class=\"kd\">public<\/span> <span class=\"nf\">PirateController<\/span><span class=\"o\">(<\/span><span class=\"nc\">PirateShip<\/span> <span class=\"n\">pirateShip<\/span><span class=\"o\">)<\/span> <span class=\"o\">{<\/span>\n        <span class=\"k\">this<\/span><span class=\"o\">.<\/span><span class=\"na\">pirateShip<\/span> <span class=\"o\">=<\/span> <span class=\"n\">pirateShip<\/span><span class=\"o\">;<\/span>\n    <span class=\"o\">}<\/span>\n\n    <span class=\"nd\">@GetMapping<\/span><span class=\"o\">(<\/span><span class=\"s\">\"\/sail\"<\/span><span class=\"o\">)<\/span>\n    <span class=\"kd\">public<\/span> <span class=\"nc\">String<\/span> <span class=\"nf\">sail<\/span><span class=\"o\">()<\/span> <span class=\"o\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"n\">pirateShip<\/span><span class=\"o\">.<\/span><span class=\"na\">sail<\/span><span class=\"o\">();<\/span>\n    <span class=\"o\">}<\/span>\n<span class=\"o\">}<\/span>\n<\/code><\/pre>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%AD%D9%84%D9%87_4_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D8%B1%D8%A7_%D8%A7%D8%AC%D8%B1%D8%A7_%DA%A9%D9%86%DB%8C%D8%AF\"><\/span>\n<p>  <strong>\u0645\u0631\u062d\u0644\u0647 4: \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f<\/strong><br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\ud83d\udca1 <strong>\u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632:<\/strong>\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>mvn spring-boot:run\n<\/code><\/pre>\n<\/div>\n<p>\u06cc\u0627\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>.\/mvnw spring-boot:run\n<\/code><\/pre>\n<\/div>\n<p>\ud83c\udf10 <strong>\u0628\u0627\u0632\u062f\u06cc\u062f:<\/strong> <code>http:\/\/localhost:8080\/pirates\/sail<\/code><\/p>\n<p>\ud83c\udf89 <strong>\u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0628\u0628\u06cc\u0646\u06cc\u062f:<\/strong>\n<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight plaintext\"><code>All hands on deck, Matey! \u2620\ufe0f\n<\/code><\/pre>\n<\/div>\n<h3><span class=\"ez-toc-section\" id=\"%F0%9F%93%8C_%D8%AE%D9%84%D8%A7%D8%B5%D9%87\"><\/span>\n<p>  \ud83d\udccc \u062e\u0644\u0627\u0635\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u2705 <strong>IOC = \u0628\u0647\u0627\u0631 \u06a9\u0646\u062a\u0631\u0644 \u0627\u06cc\u062c\u0627\u062f \u0634\u06cc \u0648 \u0686\u0631\u062e\u0647 \u0639\u0645\u0631 \u0631\u0627 \u0628\u0647 \u062f\u0633\u062a \u0645\u06cc \u06af\u06cc\u0631\u062f.<\/strong><\/p>\n<p>\u2705 <strong>di = \u062a\u0632\u0631\u06cc\u0642 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0628\u0647 \u062c\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u062f\u0633\u062a\u06cc \u0622\u0646\u0647\u0627.<\/strong><\/p>\n<p>\u2705 <strong>\u062a\u0632\u0631\u06cc\u0642 \u0633\u0627\u0632\u0646\u062f\u0647 \u0628\u0647\u062a\u0631\u06cc\u0646 \u062a\u0645\u0631\u06cc\u0646 \u0627\u0633\u062a!<\/strong><\/p>\n<p>\u2705 <strong>\u0645\u0627 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0648\u062a \u0628\u0647\u0627\u0631 \u0648\u0627\u0642\u0639\u06cc \u0633\u0627\u062e\u062a\u06cc\u0645 \u06a9\u0647 \u0646\u0634\u0627\u0646 \u062f\u0647\u0646\u062f\u0647 DI \u0627\u0633\u062a!<\/strong> <\/p>\n<p>\ud83d\udccc \u0645\u0628\u0627\u062d\u062b \u062a\u062d\u062a \u067e\u0648\u0634\u0634 \u062f\u0631 \u0627\u06cc\u0646 \u0628\u062e\u0634<br \/>\n\ud83d\udcdc IOC \u0648 \u062a\u0632\u0631\u06cc\u0642 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc (\u2714 \u062a\u062d\u062a \u067e\u0648\u0634\u0634)<\/p>\n<ul>\n<li>IOC \u0686\u06cc\u0633\u062a\u061f (\u0628\u0647\u0627\u0631 \u0628\u0627\u0639\u062b \u0627\u06cc\u062c\u0627\u062f \u0634\u06cc \u060c \u0648\u0627\u0631\u0648\u0646\u06af\u06cc \u06a9\u0646\u062a\u0631\u0644 \u0645\u06cc \u0634\u0648\u062f).<\/li>\n<li>\u062f\u06cc \u0686\u06cc\u0633\u062a\u061f (\u0628\u0647\u0627\u0631 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627 \u0631\u0627 \u062a\u0632\u0631\u06cc\u0642 \u0645\u06cc \u06a9\u0646\u062f \u060c \u06a9\u0627\u0647\u0634 \u062c\u0641\u062a).<\/li>\n<li>\u06a9\u0627\u0646\u062a\u06cc\u0646\u0631 IOC \u0628\u0647\u0627\u0631 (ApplicationContext &#038; Beanfactory).<\/li>\n<li>\u0627\u0646\u0648\u0627\u0639 DI: \u0633\u0627\u0632\u0646\u062f\u0647 \u060c \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u0646\u062f\u0647 \u060c \u062a\u0632\u0631\u06cc\u0642 \u0645\u06cc\u062f\u0627\u0646\u06cc (\u062c\u0648\u0627\u0646\u0628 \u0645\u062b\u0628\u062a\/\u0645\u0646\u0641\u06cc).<\/li>\n<li>\u0628\u0647\u062a\u0631\u06cc\u0646 \u0631\u0648\u0634\u0647\u0627: \u062a\u0632\u0631\u06cc\u0642 \u0633\u0627\u0632\u0646\u062f\u0647> \u062a\u0632\u0631\u06cc\u0642 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0646\u0646\u062f\u0647> \u062a\u0632\u0631\u06cc\u0642 \u0645\u06cc\u062f\u0627\u0646\u06cc.<\/li>\n<\/ul>\n<p>boot boot \u0648 IOC \u0628\u0647\u0627\u0631 (\u2714 \u062a\u062d\u062a \u067e\u0648\u0634\u0634)<\/p>\n<ul>\n<li>\u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u062e\u0648\u062f\u06a9\u0627\u0631 \u0648 \u0627\u0633\u06a9\u0646 Component.<\/li>\n<li>\u0631\u0641\u062a\u0627\u0631 \u0648 \u0645\u062d\u062f\u0648\u062f\u06cc\u062a \u0647\u0627\u06cc autowired.<\/li>\n<li>\u0686\u06af\u0648\u0646\u0647 IOC \u062f\u0631 \u06cc\u06a9 \u067e\u0631\u0648\u0698\u0647 \u0628\u0648\u062a \u0628\u0647\u0627\u0631 \u0627\u062f\u063a\u0627\u0645 \u0645\u06cc \u0634\u0648\u062f.<\/li>\n<\/ul>\n<p>\ud83d\udd25 \u063a\u0630\u0627\u06cc \u06a9\u0644\u06cc\u062f\u06cc \u06a9\u0647 \u0628\u0627\u06cc\u062f \u0628\u0631\u0627\u06cc \u0627\u0645\u062a\u062d\u0627\u0646 \u0628\u0647 \u062e\u0627\u0637\u0631 \u0628\u0633\u067e\u0627\u0631\u06cc\u062f:<br \/>\ncontainer Container IOC \u0628\u0647\u0627\u0631 \u060c \u0627\u0634\u06cc\u0627\u0621 (\u0644\u0648\u0628\u06cc\u0627) \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u060c \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0645\u06cc \u06a9\u0646\u062f.<br \/>\n\u2705 DI \u0628\u0627 \u062a\u0632\u0631\u06cc\u0642 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u060c \u0646\u06cc\u0627\u0632 \u0628\u0647 \u06a9\u0644\u0645\u0647 \u06a9\u0644\u06cc\u062f\u06cc \u062c\u062f\u06cc\u062f \u0631\u0627 \u0627\u0632 \u0628\u06cc\u0646 \u0645\u06cc \u0628\u0631\u062f.<br \/>\nboot Boot Spring \u0628\u0647 \u0637\u0648\u0631 \u062e\u0648\u062f\u06a9\u0627\u0631 \u0642\u0637\u0639\u0627\u062a \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 componentscan \u062b\u0628\u062a \u0645\u06cc \u06a9\u0646\u062f.<br \/>\n\u2705 autowired \u0628\u0631\u0627\u06cc \u062a\u0632\u0631\u06cc\u0642 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f \u0627\u0645\u0627 \u062a\u0632\u0631\u06cc\u0642 \u0633\u0627\u0632\u0646\u062f\u0647 \u0628\u0647\u062a\u0631\u06cc\u0646 \u0639\u0645\u0644 \u0627\u0633\u062a. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>(\u0645\u0631\u062c\u0639: \u0627\u0633\u0646\u0627\u062f \u0628\u0647\u0627\u0631 &#8211; \u0638\u0631\u0641 IOC) \ud83d\udd39 IOC (\u0648\u0627\u0631\u0648\u0646\u06af\u06cc \u06a9\u0646\u062a\u0631\u0644) \u0686\u06cc\u0633\u062a\u061f \ud83d\udca1 IOC \u06cc\u06a9 \u0627\u0635\u0644 \u0637\u0631\u0627\u062d\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u06a9\u0646\u062a\u0631\u0644 \u0627\u06cc\u062c\u0627\u062f \u0648 \u0645\u062f\u06cc\u0631\u06cc\u062a \u0634\u06cc \u0627\u0632 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u0647 \u0628\u0647 \u0686\u0627\u0631\u0686\u0648\u0628 (\u0628\u0647\u0627\u0631) \u0645\u0646\u062a\u0642\u0644 \u0645\u06cc \u0634\u0648\u062f. \ud83d\udee0 \u0642\u0628\u0644 \u0627\u0632 IOC: \u0627\u06cc\u062c\u0627\u062f \u0634\u06cc\u0621 \u0633\u0646\u062a\u06cc (\u06a9\u0646\u062a\u0631\u0644 \u062f\u0633\u062a\u06cc) public class PirateShip { private Captain captain; public PirateShip() { this.captain = &hellip;<\/p>\n","protected":false},"author":2,"featured_media":97006,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-97005","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/97005","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=97005"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/97005\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/97006"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=97005"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=97005"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=97005"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}