import{_ as s}from"./plugin-vue_export-helper.21dcd24c.js";import{r as t,o as p,c as o,a,b as c,e as i,d as e}from"./app.85cbe1c4.js";const r={},d=i(`

Spring IoC\u626B\u76F2

\u5927\u5BB6\u597D\uFF0C\u6211\u662F\u4E8C\u54E5\u5440\u3002\u4E0D\u5E9F\u8BDD\uFF0C\u4ECA\u5929\u6765\u5E26\u4F60\u4E00\u5206\u949F\u73A9\u8F6C Spring IoC\u3002Spring \u6846\u67B6\u662F Java \u540E\u7AEF\u5F00\u53D1\u4E2D\u975E\u5E38\u91CD\u8981\u7684\u57FA\u7840\u6846\u67B6\uFF0C\u53EF\u4EE5\u8BF4\u5FC5\u4E0D\u53EF\u7F3A\uFF0C\u800C IoC \u53C8\u662F Spring \u4F53\u7CFB\u4E2D\u6700\u91CD\u8981\u7684\u4E24\u4E2A\u6982\u5FF5\u4E4B\u4E00\uFF08\u53E6\u5916\u4E00\u4E2A\u662F\u8C01\u5462\uFF1F\uFF09\u3002

\u662F\u4F55

Spring \u5168\u5BB6\u6876\u4E2D\u6700\u91CD\u8981\u7684\u51E0\u4E2A\u9879\u76EE\u90FD\u662F\u57FA\u4E8E Spring Framework \u7684\uFF0C\u6240\u4EE5\u6211\u4EEC\u5C31\u4EE5 Spring Framework \u4E3A\u4F8B\u6765\u770B\u6587\u6863\u3002

\u9996\u5148\u5B83\u7684\u53F3\u4FA7\u6709 Github \u7684\u94FE\u63A5\uFF0C\u53E6\u5916\u70B9\u5230\u300CLEARN\u300D\u8FD9\u91CC\uFF0C\u5C31\u4F1A\u770B\u5230\u5404\u4E2A\u7248\u672C\u7684\u6587\u6863\u3002

\u90A3\u6211\u4EEC\u70B9\u300CReference Doc\u300D\uFF0C\u5C31\u80FD\u591F\u770B\u5230\u5B83\u7684\u4E00\u4E9B\u6A21\u5757\u7684\u4ECB\u7ECD\uFF1A

\u7B2C\u4E00\u7AE0 Overview\uFF0C\u8BB2\u8FF0\u5B83\u7684\u5386\u53F2\u3001\u8BBE\u8BA1\u539F\u7406\u7B49\u7B49\uFF1B

\u7B2C\u4E8C\u7AE0 Core\uFF0C\u5305\u542B\u4E86 IoC \u5BB9\u5668\uFF0CAOP \u7B49\u7B49\uFF0C\u90A3\u81EA\u7136\u662F\u8BB2 Spring \u7684\u6838\u5FC3\u4E86\uFF0C\u8981\u70B9\u8FDB\u53BB\u597D\u597D\u770B\u4E86\u3002

\u70B9\u8FDB\u53BB\u4E4B\u540E\u53D1\u73B0\u4E86\u5B9D\u8D35\u7684\u5B66\u4E60\u8D44\u6599\uFF0C\u4E00\u5207\u7684 what, why, how \u90FD\u53EF\u4EE5\u5728\u8FD9\u91CC\u627E\u5230\u7B54\u6848\u3002

\u8FD9\u91CC\u5F88\u597D\u7684\u89E3\u91CA\u4E86\u5927\u540D\u9F0E\u9F0E\u7684 IoC - Inversion of Control, \u63A7\u5236\u53CD\u8F6C\u3002

\u6211\u7C97\u7565\u7684\u603B\u7ED3\u4E00\u4E0B\uFF1A\u63A7\u5236\u53CD\u8F6C\u5C31\u662F\u628A\u521B\u5EFA\u548C\u7BA1\u7406 bean \u7684\u8FC7\u7A0B\u8F6C\u79FB\u7ED9\u4E86\u7B2C\u4E09\u65B9\u3002\u800C\u8FD9\u4E2A\u7B2C\u4E09\u65B9\uFF0C\u5C31\u662F Spring IoC Container\uFF0C\u5BF9\u4E8E IoC \u6765\u8BF4\uFF0C\u6700\u91CD\u8981\u7684\u5C31\u662F\u5BB9\u5668\u3002

\u5BB9\u5668\u8D1F\u8D23\u521B\u5EFA\u3001\u914D\u7F6E\u548C\u7BA1\u7406 bean\uFF0C\u4E5F\u5C31\u662F\u5B83\u7BA1\u7406\u7740 bean \u7684\u751F\u547D\uFF0C\u63A7\u5236\u7740 bean \u7684\u4F9D\u8D56\u6CE8\u5165\u3002

\u901A\u4FD7\u70B9\u8BB2\uFF0C\u56E0\u4E3A\u9879\u76EE\u4E2D\u6BCF\u6B21\u521B\u5EFA\u5BF9\u8C61\u662F\u5F88\u9EBB\u70E6\u7684\uFF0C\u6240\u4EE5\u6211\u4EEC\u4F7F\u7528 Spring IoC \u5BB9\u5668\u6765\u7BA1\u7406\u8FD9\u4E9B\u5BF9\u8C61\uFF0C\u9700\u8981\u7684\u65F6\u5019\u4F60\u5C31\u76F4\u63A5\u7528\uFF0C\u4E0D\u7528\u7BA1\u5B83\u662F\u600E\u4E48\u6765\u7684\u3001\u4EC0\u4E48\u65F6\u5019\u8981\u9500\u6BC1\uFF0C\u53EA\u7BA1\u7528\u5C31\u597D\u4E86\u3002

\u4E3E\u4E2A\u4F8B\u5B50\uFF0C\u5C31\u597D\u50CF\u7236\u6BCD\u6CA1\u65F6\u95F4\u7BA1\u5B69\u5B50\uFF0C\u5C31\u628A\u5C0F\u670B\u53CB\u4EA4\u7ED9\u6258\u7BA1\u6240\uFF0C\u5C31\u5B89\u5FC3\u7684\u53BB\u4E0A\u73ED\u800C\u4E0D\u7528\u7BA1\u5B69\u5B50\u4E86\u3002\u6258\u513F\u6240\uFF0C\u5C31\u662F\u7B2C\u4E09\u65B9\u5BB9\u5668\uFF0C\u8D1F\u8D23\u7BA1\u7406\u5C0F\u670B\u53CB\u7684\u5403\u559D\u73A9\u4E50\uFF1B\u7236\u6BCD\uFF0C\u76F8\u5F53\u4E8E\u7A0B\u5E8F\u5458\uFF0C\u53EA\u7BA1\u63A5\u9001\u5B69\u5B50\uFF0C\u4E0D\u7528\u7BA1\u4ED6\u4EEC\u5403\u559D\u3002

\u7B49\u4E0B\uFF0Cbean\xA0\u53C8\u662F\u4EC0\u4E48\uFF1F

Bean \u5176\u5B9E\u5C31\u662F\u5305\u88C5\u4E86\u7684 Object\uFF0C\u65E0\u8BBA\u662F\u63A7\u5236\u53CD\u8F6C\u8FD8\u662F\u4F9D\u8D56\u6CE8\u5165\uFF0C\u5B83\u4EEC\u7684\u4E3B\u8BED\u90FD\u662F object\uFF0C\u800C bean \u5C31\u662F\u7531\u7B2C\u4E09\u65B9\u5305\u88C5\u597D\u4E86\u7684 object\u3002\uFF08\u60F3\u4E00\u4E0B\u522B\u4EBA\u9001\u793C\u7269\u7ED9\u4F60\u7684\u65F6\u5019\u90FD\u662F\u8981\u5305\u88C5\u4E00\u4E0B\u7684\uFF0C\u81EA\u5DF1\u9020\u7684\u5C31\u514D\u4E86\u3002

Bean \u662F Spring \u7684\u4E3B\u89D2\uFF0C\u6709\u79CD\u8BF4\u6CD5\u53EB Spring \u5C31\u662F\u9762\u5411 bean \u7684\u7F16\u7A0B\uFF08Bean Oriented Programming, BOP\uFF09\u3002

IoC \u5BB9\u5668

\u65E2\u7136\u8BF4\u5BB9\u5668\u662F IoC \u6700\u91CD\u8981\u7684\u90E8\u5206\uFF0C\u90A3\u4E48 Spring \u5982\u4F55\u8BBE\u8BA1\u5BB9\u5668\u7684\u5462\uFF1F\u8FD8\u662F\u56DE\u5230\u5B98\u7F51\uFF0C\u7B2C\u4E8C\u6BB5\u6709\u4ECB\u7ECD\u54E6\uFF1A

\u7B54\uFF1A\u4F7F\u7528\xA0ApplicationContext\uFF0C\u5B83\u662F\xA0BeanFactory\xA0\u7684\u5B50\u7C7B\uFF0C\u66F4\u597D\u7684\u8865\u5145\u5E76\u5B9E\u73B0\u4E86\xA0BeanFactory\xA0\u7684\u3002

BeanFactory\xA0\u7B80\u5355\u7C97\u66B4\uFF0C\u53EF\u4EE5\u7406\u89E3\u4E3A HashMap\uFF1A

\u4F46\u5B83\u4E00\u822C\u53EA\u6709 get, put \u4E24\u4E2A\u529F\u80FD\uFF0C\u6240\u4EE5\u79F0\u4E4B\u4E3A\u201C\u4F4E\u7EA7\u5BB9\u5668\u201D\u3002

\u800C\xA0ApplicationContext\xA0\u591A\u4E86\u5F88\u591A\u529F\u80FD\uFF0C\u56E0\u4E3A\u5B83\u7EE7\u627F\u4E86\u591A\u4E2A\u63A5\u53E3\uFF0C\u53EF\u79F0\u4E4B\u4E3A\u201C\u9AD8\u7EA7\u5BB9\u5668\u201D\u3002\u5728\u4E0B\u6587\u7684\u642D\u5EFA\u9879\u76EE\u4E2D\uFF0C\u6211\u4EEC\u4F1A\u4F7F\u7528\u5B83\u3002

ApplicationContext\xA0\u7684\u91CC\u9762\u6709\u4E24\u4E2A\u5177\u4F53\u7684\u5B9E\u73B0\u5B50\u7C7B\uFF0C\u7528\u6765\u8BFB\u53D6\u914D\u7F6E\u914D\u4EF6\u7684\uFF1A

\u5F53\u6211\u4EEC\u70B9\u5F00\xA0ClassPathXmlApplicationContext\xA0\u65F6\uFF0C\u53D1\u73B0\u5B83\u5E76\u4E0D\u662F\u76F4\u63A5\u7EE7\u627F\xA0ApplicationContext\xA0\u7684\uFF0C\u5B83\u6709\u5F88\u591A\u5C42\u7684\u4F9D\u8D56\u5173\u7CFB\uFF0C\u6BCF\u5C42\u7684\u5B50\u7C7B\u90FD\u662F\u5BF9\u7236\u7C7B\u7684\u8865\u5145\u5B9E\u73B0\u3002

\u800C\u518D\u5F80\u4E0A\u627E\uFF0C\u53D1\u73B0\u6700\u4E0A\u5C42\u7684 class \u56DE\u5230\u4E86\xA0BeanFactory\uFF0C\u6240\u4EE5\u5B83\u975E\u5E38\u91CD\u8981\u3002

\u8981\u6CE8\u610F\uFF0CSpring \u4E2D\u8FD8\u6709\u4E2A\xA0FactoryBean\uFF0C\u4E24\u8005\u5E76\u6CA1\u6709\u7279\u522B\u7684\u5173\u7CFB\uFF0C\u53EA\u662F\u540D\u5B57\u6BD4\u8F83\u63A5\u8FD1\uFF0C\u6240\u4EE5\u4E0D\u8981\u5F04\u6DF7\u4E86\u987A\u5E8F\u3002

\u4E3A\u4E86\u597D\u7406\u89E3 IoC\uFF0C\u6211\u4EEC\u5148\u6765\u56DE\u987E\u4E00\u4E0B\u4E0D\u7528 IoC \u65F6\u5199\u4EE3\u7801\u7684\u8FC7\u7A0B\u3002

\u6DF1\u5165\u7406\u89E3 IoC

\u8FD9\u91CC\u7528\u7ECF\u5178\xA0class Rectangle\xA0\u6765\u4E3E\u4F8B\uFF1A

\u6CE8\u610F \u26A0\uFE0F\uFF1A\u4E00\u5B9A\u8981\u751F\u6210\xA0set()\xA0\u65B9\u6CD5\uFF0C\u56E0\u4E3A Spring IoC \u5C31\u662F\u901A\u8FC7\u8FD9\u4E2A\xA0set()\xA0\u65B9\u6CD5\u6CE8\u5165\u7684\uFF1BtoString()\xA0\u65B9\u6CD5\u662F\u4E3A\u4E86\u6211\u4EEC\u65B9\u4FBF\u6253\u5370\u67E5\u770B\u3002

public class Rectangle {
    private int width;
    private int length;

    public Rectangle() {
        System.out.println("Hello World!");
    }


    public void setWidth(int widTth) {
        this.width = widTth;
    }

    public void setLength(int length) {
        this.length = length;
    }

    @Override
    public String toString() {
        return "Rectangle{" +
                "width=" + width +
                ", length=" + length +
                '}';
    }
}

\u7136\u540E\u5728\xA0test\xA0\u6587\u4EF6\u4E2D\u624B\u52A8\u7528\xA0set()\xA0\u65B9\u6CD5\u7ED9\u53D8\u91CF\u8D4B\u503C\u3002

\u55EF\uFF0C\u5176\u5B9E\u8FD9\u4E2A\u5C31\u662F\u300C\u89E3\u85D5\u300D\u7684\u8FC7\u7A0B\uFF01

public class MyTest {
  @Test
  public void myTest() {
    Rectangle rect = new Rectangle();
    rect.setLength(2);
    rect.setWidth(3);
    System.out.println(rect);
  }
}

\u5176\u5B9E\u8FD9\u5C31\u662F IoC \u7ED9\u5C5E\u6027\u8D4B\u503C\u7684\u5B9E\u73B0\u65B9\u6CD5\uFF0C\u6211\u4EEC\u628A\u300C\u521B\u5EFA\u5BF9\u8C61\u7684\u8FC7\u7A0B\u300D\u8F6C\u79FB\u7ED9\u4E86\xA0set()\xA0\u65B9\u6CD5\uFF0C\u800C\u4E0D\u662F\u9760\u81EA\u5DF1\u53BB\xA0new\uFF0C\u5C31\u4E0D\u662F\u81EA\u5DF1\u521B\u5EFA\u7684\u4E86\u3002

\u8FD9\u91CC\u6211\u6240\u8BF4\u7684\u201C\u81EA\u5DF1\u521B\u5EFA\u201D\uFF0C\u6307\u7684\u662F\u76F4\u63A5\u5728\u5BF9\u8C61\u5185\u90E8\u6765\xA0new\uFF0C\u662F\u7A0B\u5E8F\u4E3B\u52A8\u521B\u5EFA\u5BF9\u8C61\u7684\u6B63\u5411\u7684\u8FC7\u7A0B\uFF1B\u8FD9\u91CC\u4F7F\u7528\xA0set()\xA0\u65B9\u6CD5\uFF0C\u662F\u522B\u4EBA\uFF08test\uFF09\u7ED9\u6211\u7684\uFF1B\u800C IoC \u662F\u7528\u5B83\u7684\u5BB9\u5668\u6765\u521B\u5EFA\u3001\u7BA1\u7406\u8FD9\u4E9B\u5BF9\u8C61\u7684\uFF0C\u5176\u5B9E\u4E5F\u662F\u7528\u7684\u8FD9\u4E2A\xA0set()\xA0\u65B9\u6CD5\uFF0C\u4E0D\u4FE1\uFF0C\u4F60\u628A\u8FD9\u4E2A\u8FD9\u4E2A\u65B9\u6CD5\u53BB\u6389\u6216\u8005\u6539\u4E2A\u540D\u5B57\u8BD5\u8BD5\uFF1F

\u51E0\u4E2A\u5173\u952E\u95EE\u9898\uFF1A

\u4F55\u4E3A\u63A7\u5236\uFF0C\u63A7\u5236\u7684\u662F\u4EC0\u4E48\uFF1F

\u7B54\uFF1A\u662F bean \u7684\u521B\u5EFA\u3001\u7BA1\u7406\u7684\u6743\u5229\uFF0C\u63A7\u5236 bean \u7684\u6574\u4E2A\u751F\u547D\u5468\u671F\u3002

\u4F55\u4E3A\u53CD\u8F6C\uFF0C\u53CD\u8F6C\u4E86\u4EC0\u4E48\uFF1F

\u7B54\uFF1A\u628A\u8FD9\u4E2A\u6743\u5229\u4EA4\u7ED9\u4E86 Spring \u5BB9\u5668\uFF0C\u800C\u4E0D\u662F\u81EA\u5DF1\u53BB\u63A7\u5236\uFF0C\u5C31\u662F\u53CD\u8F6C\u3002\u7531\u4E4B\u524D\u7684\u81EA\u5DF1\u4E3B\u52A8\u521B\u5EFA\u5BF9\u8C61\uFF0C\u53D8\u6210\u73B0\u5728\u88AB\u52A8\u63A5\u6536\u522B\u4EBA\u7ED9\u6211\u4EEC\u7684\u5BF9\u8C61\u7684\u8FC7\u7A0B\uFF0C\u8FD9\u5C31\u662F\u53CD\u8F6C\u3002

\u4E3E\u4E2A\u751F\u6D3B\u4E2D\u7684\u4F8B\u5B50\uFF0C\u4E3B\u52A8\u6295\u8D44\u548C\u88AB\u52A8\u6295\u8D44\u3002

\u81EA\u5DF1\u7092\u80A1\u3001\u9009\u80A1\u7968\u7684\u4EBA\u5C31\u662F\u4E3B\u52A8\u6295\u8D44\uFF0C\u4E3B\u52A8\u6743\u638C\u63E1\u5728\u81EA\u5DF1\u7684\u624B\u4E2D\uFF1B\u800C\u4E70\u57FA\u91D1\u7684\u4EBA\u5C31\u662F\u88AB\u52A8\u6295\u8D44\uFF0C\u628A\u4E3B\u52A8\u6743\u4EA4\u7ED9\u4E86\u57FA\u91D1\u7ECF\u7406\uFF0C\u9664\u975E\u4F60\u628A\u8FD9\u4E2A\u57FA\u91D1\u5356\u4E86\uFF0C\u5426\u5219\u5177\u4F53\u9009\u54EA\u4E9B\u6295\u8D44\u4EA7\u54C1\u90FD\u662F\u57FA\u91D1\u7ECF\u7406\u51B3\u5B9A\u7684\u3002

\u4F9D\u8D56\u6CE8\u5165

\u56DE\u5230\u6587\u6863\u4E2D\uFF0C\u7B2C\u4E8C\u53E5\u8BDD\u5B83\u8BF4\uFF1AIoC is also known as DI.

\u6211\u4EEC\u6765\u8C08\u8C08\xA0dependency injection\xA0- \u4F9D\u8D56\u6CE8\u5165\u3002

\u4F55\u4E3A\u4F9D\u8D56\uFF0C\u4F9D\u8D56\u4EC0\u4E48\uFF1F

\u7A0B\u5E8F\u8FD0\u884C\u9700\u8981\u4F9D\u8D56\u5916\u90E8\u7684\u8D44\u6E90\uFF0C\u63D0\u4F9B\u7A0B\u5E8F\u5185\u5BF9\u8C61\u7684\u6240\u9700\u8981\u7684\u6570\u636E\u3001\u8D44\u6E90\u3002

\u4F55\u4E3A\u6CE8\u5165\uFF0C\u6CE8\u5165\u4EC0\u4E48\uFF1F

\u914D\u7F6E\u6587\u4EF6\u628A\u8D44\u6E90\u4ECE\u5916\u90E8\u6CE8\u5165\u5230\u5185\u90E8\uFF0C\u5BB9\u5668\u52A0\u8F7D\u4E86\u5916\u90E8\u7684\u6587\u4EF6\u3001\u5BF9\u8C61\u3001\u6570\u636E\uFF0C\u7136\u540E\u628A\u8FD9\u4E9B\u8D44\u6E90\u6CE8\u5165\u7ED9\u7A0B\u5E8F\u5185\u7684\u5BF9\u8C61\uFF0C\u7EF4\u62A4\u4E86\u7A0B\u5E8F\u5185\u5916\u5BF9\u8C61\u4E4B\u95F4\u7684\u4F9D\u8D56\u5173\u7CFB\u3002

\u6240\u4EE5\u8BF4\uFF0C\u63A7\u5236\u53CD\u8F6C\u662F\u901A\u8FC7\u4F9D\u8D56\u6CE8\u5165\u5B9E\u73B0\u7684\u3002\u4F46\u662F\u4F60\u54C1\uFF0C\u4F60\u7EC6\u54C1\uFF0C\u5B83\u4EEC\u662F\u6709\u5DEE\u522B\u7684\uFF0C\u50CF\u662F\u300C\u4ECE\u4E0D\u540C\u89D2\u5EA6\u63CF\u8FF0\u7684\u540C\u4E00\u4EF6\u4E8B\u300D\uFF1A

\u4ECE\u800C\u5B9E\u73B0\u5BF9\u8C61\u4E4B\u95F4\u7684\u89E3\u85D5\u3002

\u5F53\u7136\uFF0CIoC \u4E5F\u53EF\u4EE5\u901A\u8FC7\u5176\u4ED6\u7684\u65B9\u5F0F\u6765\u5B9E\u73B0\uFF0C\u800C DI \u53EA\u662F Spring \u7684\u9009\u62E9\u3002

IoC \u548C DI \u4E5F\u5E76\u975E Spring \u6846\u67B6\u63D0\u51FA\u6765\u7684\uFF0CSpring \u53EA\u662F\u5E94\u7528\u4E86\u8FD9\u4E2A\u8BBE\u8BA1\u601D\u60F3\u548C\u7406\u5FF5\u5230\u81EA\u5DF1\u7684\u6846\u67B6\u91CC\u53BB\u3002

\u4E3A\u4F55

\u90A3\u4E48\u4E3A\u4EC0\u4E48\u8981\u7528 IoC \u8FD9\u79CD\u601D\u60F3\u5462\uFF1F\u6362\u53E5\u8BDD\u8BF4\uFF0CIoC \u80FD\u7ED9\u6211\u4EEC\u5E26\u6765\u4EC0\u4E48\u597D\u5904\uFF1F

\u7B54\uFF1A\u89E3\u85D5\u3002

\u5B83\u628A\u5BF9\u8C61\u4E4B\u95F4\u7684\u4F9D\u8D56\u5173\u7CFB\u8F6C\u6210\u7528\u914D\u7F6E\u6587\u4EF6\u6765\u7BA1\u7406\uFF0C\u7531 Spring IoC Container \u6765\u7BA1\u7406\u3002

\u5728\u9879\u76EE\u4E2D\uFF0C\u5E95\u5C42\u7684\u5B9E\u73B0\u90FD\u662F\u7531\u5F88\u591A\u4E2A\u5BF9\u8C61\u7EC4\u6210\u7684\uFF0C\u5BF9\u8C61\u4E4B\u95F4\u5F7C\u6B64\u5408\u4F5C\u5B9E\u73B0\u9879\u76EE\u7684\u4E1A\u52A1\u903B\u8F91\u3002\u4F46\u662F\uFF0C\u5F88\u591A\u5F88\u591A\u5BF9\u8C61\u7D27\u5BC6\u7ED3\u5408\u5728\u4E00\u8D77\uFF0C\u4E00\u65E6\u6709\u4E00\u65B9\u51FA\u95EE\u9898\u4E86\uFF0C\u5FC5\u7136\u4F1A\u5BF9\u5176\u4ED6\u5BF9\u8C61\u6709\u6240\u5F71\u54CD\uFF0C\u6240\u4EE5\u624D\u6709\u4E86\u89E3\u85D5\u7684\u8FD9\u79CD\u8BBE\u8BA1\u601D\u60F3\u3002

\u5982\u4E0A\u56FE\u6240\u793A\uFF0C\u672C\u6765 ABCD \u662F\u4E92\u76F8\u5173\u8054\u5728\u4E00\u8D77\u7684\uFF0C\u5F53\u52A0\u5165\u7B2C\u4E09\u65B9\u5BB9\u5668\u7684\u7BA1\u7406\u4E4B\u540E\uFF0C\u6BCF\u4E2A\u5BF9\u8C61\u90FD\u548C\u7B2C\u4E09\u65B9\u6CD5\u7684 IoC \u5BB9\u5668\u5173\u8054\uFF0C\u5F7C\u6B64\u4E4B\u95F4\u4E0D\u518D\u76F4\u63A5\u8054\u7CFB\u5728\u4E00\u8D77\u4E86\uFF0C\u6CA1\u6709\u4E86\u8026\u5408\u5173\u7CFB\uFF0C\u5168\u90E8\u5BF9\u8C61\u90FD\u4EA4\u7531\u5BB9\u5668\u6765\u63A7\u5236\uFF0C\u964D\u4F4E\u4E86\u8FD9\u4E9B\u5BF9\u8C61\u7684\u4EB2\u5BC6\u5EA6\uFF0C\u5C31\u53EB\u201C\u89E3\u85D5\u201D\u3002

\u5982\u4F55

\u6700\u540E\u5230\u4E86\u5B9E\u8DF5\u90E8\u5206\uFF0C\u6211\u4EEC\u6765\u771F\u7684\u642D\u5EFA\u4E00\u4E2A Spring \u9879\u76EE\uFF0C\u4F7F\u7528\u4E0B IoC \u611F\u53D7\u4E00\u4E0B\u3002

\u73B0\u5728\u5927\u90FD\u4F7F\u7528\xA0maven\xA0\u6765\u6784\u5EFA\u9879\u76EE\uFF0C\u65B9\u4FBF\u6211\u4EEC\u7BA1\u7406 jar \u5305\uFF1B\u4F46\u6211\u8FD9\u91CC\u5148\u8BB2\u4E00\u4E0B\u624B\u52A8\u5BFC\u5165 jar \u5305\u7684\u8FC7\u7A0B\uFF0C\u4E2D\u95F4\u4F1A\u9047\u5230\u5F88\u591A\u95EE\u9898\uFF0C\u90FD\u662F\u5F88\u597D\u7684\u5B66\u4E60\u673A\u4F1A\u3002

\u5728\u5F00\u59CB\u4E4B\u524D\uFF0C\u6211\u4EEC\u5148\u6765\u770B\u4E0B\u56FE - \u5927\u540D\u9F0E\u9F0E\u7684 Spring \u6A21\u5757\u56FE\u3002

Spring Framework \u516B\u5927\u6A21\u5757

\u6A21\u5757\u5316\u7684\u601D\u60F3\u662F Spring \u4E2D\u975E\u5E38\u91CD\u8981\u7684\u601D\u60F3\u3002

Spring \u6846\u67B6\u662F\u4E00\u4E2A\u5206\u5C42\u67B6\u6784\uFF0C\u6BCF\u4E2A\u6A21\u5757\u65E2\u53EF\u4EE5\u5355\u72EC\u4F7F\u7528\uFF0C\u53C8\u53EF\u4E0E\u5176\u4ED6\u6A21\u5757\u8054\u5408\u4F7F\u7528\u3002

\u6BCF\u4E2A\u300C\u7EFF\u6846\u300D\uFF0C\u5BF9\u5E94\u4E00\u4E2A\u6A21\u5757\uFF0C\u603B\u51718\u4E2A\u6A21\u5757\uFF1B\u300C\u9ED1\u8272\u5305\u300D\uFF0C\u8868\u793A\u8981\u5B9E\u73B0\u8FD9\u4E2A\u6A21\u5757\u7684 jar \u5305\u3002

Core Container\uFF0C\u6211\u4EEC\u521A\u624D\u5DF2\u7ECF\u5728\u6587\u6863\u91CC\u770B\u5230\u8FC7\u4E86\uFF0C\u5C31\u662F IoC \u5BB9\u5668\uFF0C\u662F\u6838\u5FC3\uFF0C\u53EF\u4EE5\u770B\u5230\u5B83\u4F9D\u8D56\u4E8E\u8FD94\u4E2A jar \u5305\uFF1A

\u90A3\u8FD9\u91CC\u6211\u4EEC\u5C31\u77E5\u9053\u4E86\uFF0C\u5982\u679C\u60F3\u8981\u7528 IoC \u8FD9\u4E2A\u529F\u80FD\uFF0C\u9700\u8981\u628A\u8FD9 4\u4E2A jar \u5305\u5BFC\u8FDB\u53BB\u3002\u5176\u4E2D\uFF0CCore \u6A21\u5757\u662F Spring \u7684\u6838\u5FC3\uFF0CSpring \u7684\u6240\u6709\u529F\u80FD\u90FD\u4F9D\u8D56\u4E8E\u8FD9\u4E2A jar \u5305\uFF0CCore \u4E3B\u8981\u662F\u5B9E\u73B0 IoC \u529F\u80FD\uFF0C\u90A3\u4E48\u8BF4\u767D\u4E86 Spring \u7684\u6240\u6709\u529F\u80FD\u90FD\u662F\u501F\u52A9\u4E8E IoC \u5B9E\u73B0\u7684\u3002

\u5176\u4ED6\u7684\u6A21\u5757\u548C\u672C\u6587\u5173\u7CFB\u4E0D\u5927\uFF0C\u4E0D\u5728\u8FD9\u91CC\u5C55\u5F00\u4E86\u3002

\u90A3\u5F53\u6211\u4EEC\u60F3\u642D\u5EFA Spring \u9879\u76EE\u65F6\uFF0C\u5F53\u7136\u53EF\u4EE5\u628A\u6240\u6709 jar \u5305\u90FD\u5BFC\u8FDB\u53BB\uFF0C\u4F46\u662F\u4F60\u7684\u7535\u8111\u80FD\u53D7\u5F97\u4E86\u5417\u3002\u3002\xA0\u4F46\u662F\u5305\u8D8A\u5927\uFF0C\u9879\u76EE\u8D8A\u5927\uFF0C\u95EE\u9898\u5C31\u8D8A\u591A\uFF0C\u6240\u4EE5\u5C3D\u91CF\u6309\u9700\u9009\u62E9\uFF0C\u4E0D\u7528\u56E4\u8D27\u3002\u3002

Btw, \u8FD9\u5F20\u56FE\u5728\u7F51\u4E0A\u6709\u5F88\u591A\uFF0C\u4F46\u662F\u5728\u6211\u5374\u6CA1\u6709\u5728\u6700\u65B0\u7248\u7684 reference doc \u4E0A\u627E\u5230\u3002\u3002\u4E0D\u8FC7\uFF0C\u65E2\u7136\u90A3\u4E9B\u8001\u7684\u6559\u7A0B\u91CC\u6709\uFF0C\u8BF4\u660E\u8001\u7248\u672C\u7684 doc \u91CC\u6709\uFF0C\u90A3\u53BB\u8001\u7248\u672C\u7684\u4ECB\u7ECD\u91CC\u627E\u627E\u770B\u{1F602}

\u5728\u672C\u6587\u7B2C\u4E00\u5F20\u56FE\xA0Spring Framework\xA0-\xA0Documentation\xA0\u4E2D\u6211\u4EEC\u9009\xA04.3.26\xA0\u7684\xA0Reference Doc.\uFF0C\u7136\u540E\u641C\u7D22\u201CFramework Modules\u201D\uFF0C\u5C31\u6709\u5566\uFF5E \u5177\u4F53\u94FE\u63A5\u53EF\u4EE5\u770B\u6587\u672B\u53C2\u8003\u8D44\u6599\u3002

\u8FD8\u6709\u4E00\u4E2A\u65B9\u6CD5\uFF0C\u5F85\u4F1A\u6211\u4EEC\u8BB2\u5230 jar \u5305\u4E2D\u7684\u5185\u5BB9\u65F6\u518D\u8BF4\u3002

\u642D\u5EFA Spring \u9879\u76EE

\u77E5\u9053\u8981\u5BFC\u5165\u54EA\u4E9B jar \u5305\u4E86\uFF0C\u90A3\u5C31\u627E\u5427\u{1F602}\u3002

\u4E00\u3001\u624B\u52A8\u52A0\u8F7D jar \u5305\u7684\u65B9\u5F0F

1. \u4E0B\u8F7D

\u4E0B\u8F7D\u5730\u5740\uFF1A

\u5982\u679C\u4F60\u8981\u95EE\u6211\u600E\u4E48\u627E\u7684\uFF0C\u90A3\u5C31\u8FD8\u662F\u4ECE\u521A\u624D\xA04.3.26\xA0\u7248\u672C\u7684\xA0Reference Doc\xA0\u4E2D\u8FDB\u53BB\uFF0C\u7136\u540E\u521A\u5F00\u5934\u5C31\u6709\u4E00\u4E2A\xA0Distribution Zip Files\uFF0C

\u597D\u5947\u5FC3\u5E26\u7740\u6211\u6253\u5F00\u4E86\u5B83\uFF0C\u53D1\u73B0...

\u53D1\u73B0\u4E86\u4ED3\u5E93\u5730\u5740\uFF01

\u6253\u5F00\u540E\u53D1\u73B0\u662F\u5404\u4E2A\u7248\u672C\u7684 jar \u5305\u554A\uFF5E

\u6211\u4EEC\u641C 5.2.3 \u7248\u7684\uFF0C\u5B83\u5728\u6700\u4E0B\u9762\uFF1A

\u7136\u540E\u5C31\u53EF\u4EE5\u6109\u5FEB\u7684\u4F7F\u7528\u4E86\uFF5E

\u5176\u4ED6\u7684\u6682\u65F6\u5148\u4E0D\u7528\u7BA1\uFF5E

\u4E0B\u8F7D\u597D\u4E86\u4E4B\u540E\uFF0C\u5C31\u597D\u597D\u770B\u770B Spring \u9001\u6211\u4EEC\u7684\u8FD9\u4EFD\u5927\u793C\u5305\u5427\u3002

\u6B64\u5904\u56DE\u7B54\u4E0A\u6587\u7684\u9057\u7559\u95EE\u9898\uFF1A\u54EA\u91CC\u627E Spring Framework \u6846\u67B6\u56FE\u3002

\u7B54\u6848\u662F\uFF1A\u4E0B\u8F7D\u7684 docs.zip \u2192 spring-framework-reference \u2192 images \u2192 spring-overview

\u6211\u4EEC\u9700\u8981\u5BFC\u5165 Intellij \u7684 jar \u5305\u5728\u54EA\u91CC\u5462\uFF1FDist.zip \u2192 libs

\u8FD9\u91CC\u53EF\u4EE5\u770B\u5230\uFF0C\u6BCF\u4E2A\u9ED1\u8272\u6846\u5BF9\u5E943\u4E2A jar \u5305\uFF0C\u6211\u4EEC\u8981\u5BFC\u5165 Intellij \u7684\u662F\xA0RELEASE.jar.

2. \u4E0D\u7528 IoC \u6784\u5EFA\u9879\u76EE

\u6211\u4EEC\xA0new project\uFF0C\u4E0D\u7528 maven \u6784\u67B6\uFF0C\u5C31\u65B0\u5EFA\u4E00\u4E2A\u666E\u901A\u7684 Java \u9879\u76EE\uFF0C\u6BD4\u5982\u6211\u5C31\u53EB\u5B83\xA0Spring_HelloWorld\uFF0C\u7136\u540E\u8FD8\u662F\u7528\u6211\u5E38\u7528\u7684\xA0class Rectangle\xA0\u7684\u4F8B\u5B50\u3002

\u7136\u540E\u5728 External Libraries \u4E2D\u5BFC\u5165\u6211\u4EEC\u521A\u624D\u5728\u6A21\u5757\u56FE\u91CC\u770B\u5230\u7684\u90A34\u4E2A\u6A21\u5757\u6240\u5BF9\u5E94\u7684 jar \u5305\uFF0C\u7ED3\u6784\u5982\u4E0B\uFF1A

\u8FD9\u6837\u4F60\u4EE5\u4E3A\u5C31\u5927\u529F\u544A\u6210\u4E86\u5417\uFF1FToo young too simple \u554A\uFF5E

\u6765\u8FD0\u884C\u4E00\u4E0B\uFF1A

\u51FA\u73B0\u4E86\u8001\u76C6\u53CB\uFF1Ano class def found\xA0error, \u5C31\u662F\u627E\u4E0D\u5230\u8FD9\u4E2A\u7C7B\u3002

\u6211\u4EEC\u8C37\u6B4C\xA0Maven common logging\xA0\u5E76\u4E0B\u8F7D\u5B83\u7684 jar \u5305\uFF0C\u518D\u52A0\u5230\u9879\u76EE\u91CC\u5C31\u53EF\u4EE5\u4E86\u3002

\u6211\u4E0A\u56FE\u91CC\u662F\u5DF2\u7ECF\u52A0\u8FC7\u4E86\u7684\uFF0C\u6240\u4EE5\u4F60\u4F1A\u770B\u5230\u4E00\u4E2A\xA0commons-logging-1.2.

\u518D\u8FD0\u884C\u4E00\u4E0B\u5C31\u53EF\u4EE5\u4E86\u3002\u8FD9\u91CC\u7684\u4E24\u4E2A\u6587\u4EF6\u4E0A\u6587\u90FD\u6709\u622A\u56FE\u3002

\u76EE\u524D\u4E3A\u6B62\u6211\u4EEC\u662F\u624B\u52A8\u7528\xA0set()\xA0\u65B9\u6CD5\u8BBE\u7F6E\u5BF9\u8C61\u7684\uFF0C\u90A3\u600E\u4E48\u7528 Spring IoC \u5462\uFF1F

3. Spring IoC \u914D\u7F6E\u6587\u4EF6\u8BE6\u89E3

\u8FD8\u9700\u8981\u6709\u4E00\u4E2A\u914D\u7F6E\u6587\u4EF6\uFF0C\u53EF\u662F\u8FD9\u4E2A\u6587\u4EF6\u9700\u8981\u914D\u7F6E\u5565\uFF0C\u8BE5\u600E\u4E48\u914D\u7F6E\u5462\uFF1F

\u5B98\u7F51\u91CC\u90FD\u7ED9\u6211\u4EEC\u5199\u597D\u4E86\uFF1A

\u7B2C\u4E00\u6BB5\u662F\u4E00\u4E9B\u547D\u540D\u7A7A\u95F4\u53CA\u5176\u89C4\u8303\u7684\u4ECB\u7ECD\uFF0C

\u7B2C\u4E8C\u6BB5\u5C31\u662F\u7ED9\xA0bean\xA0\u7684\u5C5E\u6027\u8D4B\u503C\u4E86\u3002

\u8FD9\u91CC\u6CE8\u610F\u4E0B\xA0bean\xA0\u91CC\u9762\u7684\u914D\u7F6E\u8981\u6539\u4E00\u4E0B\uFF0C\u6539\u6210\u6211\u4EEC\u8FD9\u4E2A\u9879\u76EE\u5BF9\u5E94\u7684\u3002\u8FD9\u91CC\u7684\xA0id,\xA0class\xA0\u662F\u4EC0\u4E48\u610F\u601D\u5462\uFF1F\u5B98\u7F51\u4E0A\u4E5F\u6709\u89E3\u91CA\uFF0C\u6211\u8FD9\u91CC\u7B80\u5355\u6982\u62EC\u4E0B\uFF1A

\u5176\u5B9E\u4E5F\u53EF\u4EE5\u7528 constructor \u6765\u8D4B\u503C\uFF0Cname \u7684\u540D\u79F0\u53D6\u51B3\u4E8E\u53C2\u6570\u5217\u8868\uFF1B\u66F4\u591A\u7ED9\u590D\u6742\u6570\u636E\u7C7B\u578B\u8D4B\u503C\u7684\u4F7F\u7528\u53EF\u4EE5\u5728\u5B98\u7F51\u67E5\u5230\u3002

\u5F53\u7136\uFF0C\u5728\u5DE5\u4F5C\u4E2D\u66F4\u5E38\u7528\u7684\u662F\u6CE8\u89E3\u3002\u4F46\u662F\u5F80\u5F80\u4E5F\u4F1A\u6709 xml \u6587\u4EF6\u914D\u5408\u7740\u4E00\u8D77\u4F7F\u7528\u7684\uFF0C\u6240\u4EE5\u8FD8\u662F\u8981\u61C2\u7684\u3002

\u6211\u7684 service \u6587\u4EF6\u914D\u7F6E\u5982\u4E0B\uFF1A

4. \u6700\u540E\u4E00\u6B65\uFF0C\u6211\u4EEC\u518D\u6765\u770B\u5B83\u662F\u600E\u4E48\u7528\u7684\uFF1A

\u8FD9\u91CC\u9762\u5E76\u6CA1\u6709\u76F4\u63A5\u7684 new \u8FD9\u4E2A service\uFF0C\u4F46\u662F Spring \u5BB9\u5668\u5E2E\u6211\u4EEC\u521B\u5EFA\u4E86\u8FD9\u4E2A\u5BF9\u8C61\u3002

\u90A3\u4E48 Spring \u662F\u5982\u4F55\u5E2E\u6211\u4EEC\u521B\u5EFA\u5BF9\u8C61\u7684\u5462\uFF1F

ApplicationContext\xA0\u662F\xA0IoC \u5BB9\u5668\u7684\u5165\u53E3\uFF0C\u5176\u5B9E\u4E5F\u5C31\u662F\xA0Spring \u7A0B\u5E8F\u7684\u5165\u53E3\uFF0C \u521A\u624D\u5DF2\u7ECF\u8BF4\u8FC7\u4E86\u5B83\u7684\u4E24\u4E2A\u5177\u4F53\u7684\u5B9E\u73B0\u5B50\u7C7B\uFF0C\u5728\u8FD9\u91CC\u7528\u4E86\u4ECE class path \u4E2D\u8BFB\u53D6\u6570\u636E\u7684\u65B9\u5F0F\uFF1B

\u7136\u540E\u7B2C\u4E8C\u884C\uFF0C\u5C31\u662F\u83B7\u53D6\u5177\u4F53\u7684 bean \u4E86\u3002\u8FD9\u4E2A\u5176\u5B9E\u6709\u5F88\u591A\u65B9\u5F0F\uFF0C\u5728\u4F7F\u7528\u7684\u65F6\u5019\u5C31\u80FD\u770B\u5230\uFF1A

\u70B9\u8FDB\u53BB\u53D1\u73B0\uFF0C\u662F\u5728 BeanFactory.class \u91CC\u5B9A\u4E49\u7684\uFF1A

\u8FD9\u5176\u4E2D\u6BD4\u8F83\u5E38\u7528\u7684\u662F\u901A\u8FC7

\u6765\u83B7\u53D6\u5BF9\u8C61\uFF0C\u6700\u540E\u4E24\u79CD String, Class objects \u8FD9\u79CD\u53EF\u53D8\u53C2\u6570\u7684\u65B9\u5F0F\u7528\u7684\u5F88\u5C11\u3002

\u7167\u732B\u753B\u864E\uFF0C\u6211\u7684 test \u6587\u4EF6\u6539\u52A8\u5982\u4E0B\uFF1A

\u6210\u529F\u8FD0\u884C\uFF5E\uFF5E\u{1F389}\u{1F389}

Follow up 1. \u5BF9\u8C61\u5728\u5BB9\u5668\u4E2D\u9ED8\u8BA4\u662F\u5355\u4F8B\u7684

\u5B9E\u8DF5\u662F\u68C0\u9A8C\u7684\u552F\u4E00\u6807\u51C6\uFF1A

\u518D\u7528\xA0getBean()\xA0\u5F97\u5230\u4E00\u4E2A\u5BF9\u8C61\uFF0C\u6D4B\u8BD5\u662F\u5426\u8FD8\u662F\u540C\u4E00\u4E2A\u3002

\u5373\uFF1A

public class MyTest {
  public void test myTest() {
    ApplicationContext context = new ClassPathXmlApplicationContext("service.xml");
        Rectangle rect = context.getBean("rectangle", Rectangle.class);
        Rectangle rect2 = context.getBean("rectangle", Rectangle.class);
        System.out.println(rect == rect2);
    }
  }
}

\u8FD4\u56DE True or False?

\u7B54\uFF1ATrue

\u56E0\u4E3A\u9ED8\u8BA4\u662F\u5355\u4F8B\u7684\uFF0C\u5982\u679C\u8981\u6539\uFF0C\u9700\u8981\u5728\u914D\u7F6E\u6587\u4EF6\u91CC\u6539<bean \u2026 scope = \u201Cprototype\u201D>.

\u81F3\u4E8E\u8FD9\u4E9B\u6807\u7B7E\u7684\u7528\u6CD5\uFF0C\u8FD9\u91CC\u4E0D\u518D\u5EF6\u4F38\u4E86\uFF5E

Follow up 2. \u5BB9\u5668\u4E2D\u7684\u5BF9\u8C61\u662F\u4EC0\u4E48\u65F6\u5019\u521B\u5EFA\u7684\uFF1F

\u5B9E\u8DF5\u662F\u68C0\u9A8C\u7684\u552F\u4E00\u6807\u51C6\uFF1A

\u5B9A\u4E49\u4E00\u4E2A\u65E0\u53C2\u7684 constructor\uFF0C\u91CC\u9762\u6253\u5370\u4E00\u53E5\u8BDD\uFF0C\u7136\u540E\u53EA\xA0new ClassPathXmlApplicationContext\uFF0C\u5982\u4E0B\u56FE\uFF1A

\u53D1\u73B0\u4E5F\u662F\u53EF\u4EE5\u6253\u5370\u7684\uFF0C\u6240\u4EE5\u5176\u5B9E\u662F\u6BCF\u6B21\u542F\u52A8\u5BB9\u5668\u7684\u65F6\u5019\uFF0C\u5C31\u5DF2\u7ECF\u521B\u5EFA\u597D\u5BB9\u5668\u4E2D\u7684\u6240\u6709\u5BF9\u8C61\u4E86\u3002\uFF08\u5F53\u7136\uFF0C\u8FD9\u5728\xA0scope = "prototype"\xA0\u7684\u65F6\u5019\u4E0D\u9002\u7528\uFF0C\u53EA\u662F singleton \u7684\u65F6\u5019\u3002\uFF09

\u591A\u8BF4\u4E00\u53E5\uFF0C\u5176\u5B9E\u6700\u597D\u5E94\u8BE5\u4E00\u76F4\u4FDD\u7559\u4E00\u4E2A\u65E0\u53C2\u7684 constructor\uFF0C\u56E0\u4E3A\u8FD9\u91CC bean \u5BF9\u8C61\u7684\u521B\u5EFA\u662F\u901A\u8FC7\u53CD\u5C04\uFF0C

\u4E0D\u8FC7\uFF0C\u73B0\u5728\u5DF2\u7ECF\u88AB\u5F03\u7528\u6389\u4E86\uFF0C\u6362\u7528\u4E86\u8FD9\u4E2A\uFF1A

\u4E8C\u3001\u4F7F\u7528 Maven \u6784\u5EFA\u9879\u76EE

\u6211\u4EEC\u518D\u56DE\u5230\u6700\u5F00\u59CB\u7684\u6784\u5EFA\u9879\u76EE\uFF0C\u76F8\u4FE1\u5927\u5BB6\u90FD\u4F53\u4F1A\u5230\u4E86\u624B\u52A8\u5BFC\u5165 jar \u5305\u7684\u7E41\u7410\u4E4B\u5904\uFF0C\u5176\u5B9E\u6211\u4EEC\u8FD8\u53EF\u4EE5\u7528 Maven \u6765\u7BA1\u7406\u9879\u76EE\u4E2D\u7684 jar \u5305\uFF0C\u5728\u516C\u53F8\u4E2D\u4E5F\u662F\u6BD4\u8F83\u5E38\u7528\u7684\u4E00\u79CD\u65B9\u5F0F\uFF0C\u514D\u9664\u4E86\u624B\u52A8\u4E0B\u8F7D jar \u5305\u7684\u8FC7\u7A0B\u3002

1. \u65B0\u5EFA\u9879\u76EE

\u4F7F\u7528 Maven \u7684\u8BDD\u5C31\u7B80\u5316\u5F88\u591A\u4E86\uFF0C\u9996\u5148\u6211\u4EEC\u521B\u5EFA\u4E00\u4E2A Maven \u9879\u76EE\uFF0C\u4E0D\u540C\u4E8E\u521A\u624D\u7684\u8FC7\u7A0B\u5728\u4E8E\uFF1A

New Project \u7684\u65F6\u5019\u8981\u9009\u62E9\u4ECE Maven \u6784\u5EFA\uFF0C\u800C\u4E0D\u662F\u4E00\u4E2A\u7B80\u5355\u7684 Java \u9879\u76EE\u3002

\u5EFA\u597D\u4E4B\u540E\uFF0C\u6211\u4EEC\u4F1A\u53D1\u73B0\u6BD4\u8D77\u521A\u624D\u7684 Java \u9879\u76EE\uFF0C\u591A\u4E86\u5F88\u591A\u4E1C\u897F\uFF1A

\u548C\u4E4B\u524D\u7684\u7A7A\u9879\u76EE\u4E0D\u592A\u4E00\u6837\uFF0C\u8FD9\u91CC\u6709\xA0main,\xA0test\uFF0C\u5176\u4E2D\xA0resources\xA0\u662F\u653E\u914D\u7F6E\u6587\u4EF6\u7684\u5730\u65B9\uFF0C\u4E5F\u5C31\u662F\u6211\u4EEC\u521A\u624D\u7684\xA0service.xml\xA0\u5E94\u8BE5\u653E\u5728\u8FD9\u91CC\uFF0C\u5982\u679C\u6CA1\u6709\u653E\u5BF9\u4F4D\u7F6E\u662F\u4EE3\u7801\u627E\u4E0D\u5230\u54E6\uFF5E

2. \u6DFB\u52A0\u5BF9\u5E94\u7684 pom \u4F9D\u8D56\uFF0C\u5C31\u4E0D\u7528\u624B\u52A8\u5BFC jar \u5305\u4E86

  1. \u4ED3\u5E93\u5730\u5740\xA0https://mvnrepository.com/

  2. \u641C\xA0spring

  3. \u9009\u62E9\xA0Spring context\xA0\u2192\xA05.2.3 release\uFF0C\u628A\u91CC\u9762\u7684\u914D\u7F6E copy \u5230\xA0pom.xml\xA0\u4E2D

\u6700\u7EC8\u5728\u5DE6\u8FB9 external libraries \u4F1A\u81EA\u52A8\u51FA\u73B0\u6240\u9700\u7684\u5305\uFF0C\u4E00\u952E\u5BFC\u5165\uFF0C\u4E0D\u8981\u592A\u65B9\u4FBF\uFF5E

3. \u5199\u4EE3\u7801\uFF5E\uFF5E\u{1F389}\u{1F389}

\u5C0F\u7ED3

\u6211\u4EEC\u6700\u540E\u518D\u6765\u4F53\u4F1A\u4E00\u4E0B\u7528 Spring \u521B\u5EFA\u5BF9\u8C61\u7684\u8FC7\u7A0B\uFF1A

\u901A\u8FC7\xA0ApplicationContext\xA0\u8FD9\u4E2A IoC \u5BB9\u5668\u7684\u5165\u53E3\uFF0C\u7528\u5B83\u7684\u4E24\u4E2A\u5177\u4F53\u7684\u5B9E\u73B0\u5B50\u7C7B\uFF0C\u4ECE class path \u6216\u8005 file path \u4E2D\u8BFB\u53D6\u6570\u636E\uFF0C\u7528\xA0getBean()\xA0\u83B7\u53D6\u5177\u4F53\u7684 bean instance\u3002

\u90A3\u4F7F\u7528 Spring \u5230\u5E95\u7701\u7565\u4E86\u6211\u4EEC\u4EC0\u4E48\u5DE5\u4F5C\uFF1F

\u7B54\uFF1Anew \u7684\u8FC7\u7A0B\u3002\u628A new \u7684\u8FC7\u7A0B\u4EA4\u7ED9\u7B2C\u4E09\u65B9\u6765\u521B\u5EFA\u3001\u7BA1\u7406\uFF0C\u8FD9\u5C31\u662F\u300C\u89E3\u85D5\u300D\u3002

Spring \u4E5F\u662F\u7528\u7684\xA0set()\xA0\u65B9\u6CD5\uFF0C\u5B83\u53EA\u4E0D\u8FC7\u63D0\u4F9B\u4E86\u4E00\u5957\u66F4\u52A0\u5B8C\u5584\u7684\u5B9E\u73B0\u673A\u5236\u800C\u5DF2\u3002

\u800C\u8BF4\u5230\u5E95\uFF0C\u5E95\u5C42\u7684\u539F\u7406\u5E76\u6CA1\u6709\u5F88\u590D\u6742\uFF0C\u53EA\u662F\u4E3A\u4E86\u63D0\u9AD8\u6269\u5C55\u6027\u3001\u517C\u5BB9\u6027\uFF0CSpring \u63D0\u4F9B\u4E86\u4E30\u5BCC\u7684\u652F\u6301\uFF0C\u6240\u4EE5\u624D\u89C9\u5F97\u6E90\u7801\u6BD4\u8F83\u96BE\u3002

\u56E0\u4E3A\u6846\u67B6\u662F\u8981\u7ED9\u5404\u79CD\u5404\u6837\u7684\u7528\u6237\u6765\u4F7F\u7528\u7684\uFF0C\u5B83\u4EEC\u8003\u8651\u7684\u66F4\u591A\u7684\u662F\u6269\u5C55\u6027\u3002\u5982\u679C\u8BA9\u6211\u4EEC\u6765\u5B9E\u73B0\uFF0C\u6216\u8BB8\u4E09\u4E94\u884C\u5C31\u80FD\u641E\u5B9A\uFF0C\u4F46\u662F\u6211\u4EEC\u5B9E\u73B0\u7684\u4E0D\u5B8C\u5584\u3001\u4E0D\u5B8C\u6574\u3001\u4E0D\u4E25\u8C28\uFF0C\u603B\u4E4B\u4E0D\u9AD8\u5927\u4E0A\uFF0C\u6240\u4EE5\u5B83\u5199\u4E09\u4E94\u5341\u884C\uFF0C\u628A\u6846\u67B6\u8BBE\u8BA1\u7684\u5C3D\u53EF\u80FD\u7684\u5B8C\u5584\uFF0C\u63D0\u4F9B\u4E86\u4E30\u5BCC\u7684\u652F\u6301\uFF0C\u6EE1\u8DB3\u4E0D\u540C\u7528\u6237\u7684\u9700\u6C42\uFF0C\u624D\u80FD\u5360\u9886\u66F4\u5927\u7684\u5E02\u573A\u554A\u3002


`,195),l=e("\u4F5C\u8005\uFF1A\u5C0F\u9F50\uFF0C\u8F6C\u8F7D\u94FE\u63A5\uFF1A"),u={href:"https://mp.weixin.qq.com/s/CcL3cEcQRi-KhwTwmf5A0w",target:"_blank",rel:"noopener noreferrer"},b=e("https://mp.weixin.qq.com/s/CcL3cEcQRi-KhwTwmf5A0w"),g=a("p",null,[a("img",{src:"http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/xingbiaogongzhonghao.png",alt:""})],-1);function m(h,k){const n=t("ExternalLinkIcon");return p(),o("div",null,[d,a("blockquote",null,[a("p",null,[l,a("a",u,[b,c(n)])])]),g])}var f=s(r,[["render",m],["__file","ioc.html.vue"]]);export{f as default};