{"id":5785,"date":"2024-04-15T23:44:15","date_gmt":"2024-04-15T15:44:15","guid":{"rendered":"http:\/\/zyg.luchers.cn\/?p=5785"},"modified":"2024-04-15T23:44:15","modified_gmt":"2024-04-15T15:44:15","slug":"%e7%ac%ac%e4%b8%89%e7%ab%a0%e3%80%81%e5%ae%b9%e5%99%a8%ef%bc%9aioc","status":"publish","type":"post","link":"http:\/\/zyg.luchers.cn\/index.php\/2024\/04\/15\/%e7%ac%ac%e4%b8%89%e7%ab%a0%e3%80%81%e5%ae%b9%e5%99%a8%ef%bc%9aioc\/","title":{"rendered":"\u7b2c\u4e09\u7ae0\u3001\u5bb9\u5668\uff1aIoC"},"content":{"rendered":"<h2>\u7b2c\u4e09\u7ae0\u3001\u5bb9\u5668\uff1aIoC<\/h2>\n<h3>1\u3001\u662f\u4ec0\u4e48<\/h3>\n<p>1\u3001\u662fInversion of Control\u7684\u7b80\u5199\uff0c\u8bd1\u4e3a\u201c\u63a7\u5236\u53cd\u8f6c\u201d\uff0c<strong>\u662f\u4e00\u79cd\u8bbe\u8ba1\u601d\u60f3\uff0c\u4e00\u4e2a\u91cd\u8981\u7684\u9762\u5411\u5bf9\u8c61\u7f16\u7a0b\u6cd5\u5219<\/strong><\/p>\n<p>2\u3001\u80fd\u77e5\u9053\u6211\u4eec\u5982\u4f55\u8bbe\u8ba1\u677e\u8026\u5408\uff0c\u66f4\u725b\u7684\u7a0b\u5e8f<\/p>\n<p>3\u3001<strong>Spring\u901a\u8fc7Ioc\u5bb9\u5668\u7ba1\u7406\u6240\u6709java\u5bf9\u8c61\u7684\u5b9e\u4f8b\u5316\u548c\u521d\u59cb\u5316\uff0c\u63a7\u5236\u5bf9\u8c61\uff0c\u548c\u5bf9\u8c61\u4e4b\u95f4\u7684\u4f9d\u8d56\u5173\u7cfb\u3002<\/strong><\/p>\n<p>4\u3001\u6211\u4eec\u5c06\u7531Ioc\u5bb9\u5668\u7ba1\u7406\u7684java\u5bf9\u8c61\u79f0\u4e3aSpring Bean<\/p>\n<p>5\u3001\u5b83\u4e0e\u4f7f\u7528\u5173\u952e\u5b57new\u521b\u5efa\u7684java\u5bf9\u8c61\u6ca1\u6709\u4efb\u4f55\u533a\u522b<\/p>\n<p>6\u3001Ioc\u662fSpring\u6846\u67b6\u6700\u91cd\u8981\u7684\u6838\u5fc3\u7ec4\u4ef6\u4e4b\u4e00\uff0c\u8d2f\u7a7fSpring\u8bde\u751f\u548c\u6210\u957f\u7684\u8fc7\u7a0b<\/p>\n<p>7\u3001\u914d\u7f6e\u6587\u4ef6\u4ee5XML\u3001java\u6ce8\u89e3\u6216java\u4ee3\u7801\u5b9e\u73b0<\/p>\n<h3>2\u3001\u600e\u4e48\u7528<\/h3>\n<p>1\u3001\u7406\u89e3<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/zyg.luchers.cn\/wp-content\/uploads\/2024\/04\/image-20231225161926104.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"http:\/\/zyg.luchers.cn\/wp-content\/uploads\/2024\/04\/image-20231225161926104.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20231225161926104\" \/><\/div><\/p>\n<h4>1\u3001\u63a7\u5236\u53cd\u8f6c\uff08Ioc\uff09<\/h4>\n<p>1\u3001\u662f\u4e00\u79cd\u601d\u60f3<\/p>\n<p>2\u3001\u964d\u4f4e\u7a0b\u5e8f\u7684\u8026\u5408\u5ea6\uff0c\u63d0\u9ad8\u7a0b\u5e8f\u6269\u5c55\u80fd\u529b<\/p>\n<h5>1\u3001\u53cd\u8f6c\u4ec0\u4e48\uff1f<\/h5>\n<p>1\u3001\u5c06\u5bf9\u8c61\u7684\u521b\u5efa\u6743\u5229\u4ea4\u7ed9\u7b2c\u4e09\u65b9\u5bb9\u5668\u8d1f\u8d23<\/p>\n<p>2\u3001\u5bf9\u8c61\u548c\u5bf9\u8c61\u4e4b\u95f4\u5173\u7cfb\u7684\u7ef4\u62a4\u6743\uff0c\u4ea4\u7ed9\u7b2c\u4e09\u65b9\u5bb9\u5668\u8d1f\u8d23<\/p>\n<h5>2\u3001\u5982\u4f55\u5b9e\u73b0\uff1f<\/h5>\n<p>1\u3001DI(Dependency injection):\u4f9d\u8d56\u6ce8\u5165<\/p>\n<p>2\u3001\u5bb9\u5668\u4f7f\u7528\u7684map\u96c6\u5408\uff08\u65b9\u4fbf\uff0ckey-value)<\/p>\n<p>3\u3001\u56fe\u89e3<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/zyg.luchers.cn\/wp-content\/uploads\/2024\/04\/image-20231007173103481.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"http:\/\/zyg.luchers.cn\/wp-content\/uploads\/2024\/04\/image-20231007173103481.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20231007173103481\" \/><\/div><\/p>\n<h4>2\u3001\u4f9d\u8d56\u6ce8\u5165(DI)<\/h4>\n<h5>1\u3001 \u662f\u4ec0\u4e48\uff1f<\/h5>\n<p>1\u3001DI(Dependency Injection)\uff1a\u4f9d\u8d56\u6ce8\u5165\uff0c\u4f9d\u8d56\u6ce8\u5165\u5b9e\u73b0\u4e86\u63a7\u5236\u53cd\u8f6c\u7684\u601d\u60f3<\/p>\n<p>2\u3001\u6307Spring\u521b\u5efa\u5bf9\u8c61\u7684\u8fc7\u7a0b\u4e2d\uff0c\u5c06\u5bf9\u8c61\u4f9d\u8d56\u5c5e\u6027\u901a\u8fc7\u914d\u7f6e\u8fdb\u884c\u6ce8\u5165<\/p>\n<h5>2\u3001\u600e\u4e48\u7528\uff08\u4e24\u79cd\u65b9\u5f0f\uff09<\/h5>\n<p>1\u3001set\u6ce8\u5165<\/p>\n<p>2\u3001\u6784\u9020\u6ce8\u5165<\/p>\n<h5>3\u3001\u603b\u7ed3<\/h5>\n<p>1\u3001IOC\u662f\u4e00\u79cd\u63a7\u5236\u53cd\u8f6c\u7684\u601d\u60f3\uff0c\u800c\u4f9d\u8d56\u6ce8\u5165\u662f\u5bf9IoC\u7684\u4e00\u79cd\u5177\u4f53\u7684\u5b9e\u73b0<\/p>\n<p>2\u3001Bean\u7ba1\u7406\uff1aBean\u5bf9\u8c61\u7684\u521b\u5efa\uff0c\u4ee5\u53caBean\u5bf9\u8c61\u4e2d\u5c5e\u6027\u7684\u8d4b\u503c\uff08\u6216\u53ebBean\u5bf9\u8c61\u4e4b\u95f4\u5173\u7cfb\u7684\u7ef4\u62a4\uff09<\/p>\n<h4>3\u3001IoC\u5bb9\u5668\u5728Spring\u7684\u5b9e\u73b0\uff08\u63a5\u53e3\uff09<\/h4>\n<p>1\u3001Spring\u7684IoC\u5bb9\u5668\u5c31\u662fIoC\u601d\u60f3\u7684\u4ea7\u54c1\uff0cIoC\u5bb9\u5668\u4e2d\u7ba1\u7406\u7684\u7ec4\u4ef6\u4e5f\u53ebbean\uff0c\u5728\u521b\u5efabean\u4e4b\u524d\uff0c\u9996\u5148\u9700\u8981\u521b\u5efaIoC\u5bb9\u5668\uff0cSpring\u63d0\u4f9b\u4e86IoC\u5bb9\u5668\u7684\u4e24\u79cd\u5b9e\u73b0\u65b9\u5f0f<\/p>\n<h5>1\u3001BeanFactory<\/h5>\n<p>1\u3001\u662fIoC\u5bb9\u5668\u7684\u57fa\u672c\u5b9e\u73b0\uff0c\u9762\u5411Spring\u672c\u8eab\uff0c\u4e0d\u63d0\u4f9b\u7ed9\u5f00\u53d1\u4eba\u5458\u4f7f\u7528<\/p>\n<p>2\u3001\u6700\u57fa\u672c\u7684\u5bb9\u5668<\/p>\n<h5>2\u3001ApplicationContext<\/h5>\n<p>1\u3001\u662fBeanFactory\u7684\u5b50\u63a5\u53e3\uff0c\u63d0\u4f9b\u66f4\u591a\u7684\u7279\u6027<\/p>\n<p>2\u3001\u9762\u5411Spring\u7684\u4f7f\u7528\u8005<\/p>\n<p>3\u3001\u51e0\u4e4e\u6240\u6709\u573a\u5408\u90fd\u4f7f\u7528ApplicaationContext\uff0c\u800c\u4e0d\u662f\u5e95\u5c42\u7684BeanFactory<\/p>\n<p>BeanFactory\u3002<\/p>\n<p><strong>\u2462ApplicationContext\u7684\u4e3b\u8981\u5b9e\u73b0\u7c7b<\/strong><\/p>\n<table>\n<thead>\n<tr>\n<th>\u7c7b\u578b\u540d<\/th>\n<th>\u7b80\u4ecb<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>ClassPathXmlApplicationContext<\/td>\n<td>\u901a\u8fc7\u8bfb\u53d6\u7c7b\u8def\u5f84\u4e0b\u7684 XML \u683c\u5f0f\u7684\u914d\u7f6e\u6587\u4ef6\u521b\u5efa IOC \u5bb9\u5668\u5bf9\u8c61<\/td>\n<\/tr>\n<tr>\n<td>FileSystemXmlApplicationContext<\/td>\n<td>\u901a\u8fc7\u6587\u4ef6\u7cfb\u7edf\u8def\u5f84\u8bfb\u53d6 XML \u683c\u5f0f\u7684\u914d\u7f6e\u6587\u4ef6\u521b\u5efa IOC \u5bb9\u5668\u5bf9\u8c61<\/td>\n<\/tr>\n<tr>\n<td>ConfigurableApplicationContext<\/td>\n<td>ApplicationContext \u7684\u5b50\u63a5\u53e3\uff0c\u5305\u542b\u4e00\u4e9b\u6269\u5c55\u65b9\u6cd5 refresh() \u548c close() \uff0c\u8ba9 ApplicationContext \u5177\u6709\u542f\u52a8\u3001\u5173\u95ed\u548c\u5237\u65b0\u4e0a\u4e0b\u6587\u7684\u80fd\u529b\u3002<\/td>\n<\/tr>\n<tr>\n<td>WebApplicationContext<\/td>\n<td>\u4e13\u95e8\u4e3a Web \u5e94\u7528\u51c6\u5907\uff0c\u57fa\u4e8e Web \u73af\u5883\u521b\u5efa IOC \u5bb9\u5668\u5bf9\u8c61\uff0c\u5e76\u5c06\u5bf9\u8c61\u5f15\u5165\u5b58\u5165 ServletContext \u57df\u4e2d\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/zyg.luchers.cn\/wp-content\/uploads\/2024\/04\/image-20231225160958414.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"http:\/\/zyg.luchers.cn\/wp-content\/uploads\/2024\/04\/image-20231225160958414.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20231225160958414\" \/><\/div><\/p>\n<h3>3\u3001IOC\u3001DI\u5b9e\u73b0\u6b65\u9aa4<\/h3>\n<p>1\u3001\u601d\u8def<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/zyg.luchers.cn\/wp-content\/uploads\/2024\/04\/image-20231225162907072.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"http:\/\/zyg.luchers.cn\/wp-content\/uploads\/2024\/04\/image-20231225162907072.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20231225162907072\" \/><\/div><\/p>\n<h4>1\u3001\u7f16\u5199\u914d\u7f6e\u6587\u4ef6<\/h4>\n<p>\u914d\u7f6e\u5143\u6570\u636e\uff0c\u65e2\u662f\u7f16\u5199\u4ea4\u7ed9SpringIoC\u5bb9\u5668\u7ba1\u7406\u7ec4\u4ef6\u7684\u4fe1\u606f\uff0c\u914d\u7f6e\u65b9\u5f0f\u6709\u4e09\u79cd\u3002<\/p>\n<p>1\u3001\u57fa\u4e8e XML \u7684\u914d\u7f6e\u5143\u6570\u636e\u7684\u57fa\u672c\u7ed3\u6784\uff1a<\/p>\n<pre><code>&lt;bean id=&quot;...&quot; [1] class=&quot;...&quot; [2]&gt;  \n    &lt;!-- collaborators and configuration for this bean go here --&gt;\n&lt;\/bean&gt;<\/code><\/pre>\n<pre><code>  &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;!-- \u6b64\u5904\u8981\u6dfb\u52a0\u4e00\u4e9b\u7ea6\u675f\uff0c\u914d\u7f6e\u6587\u4ef6\u7684\u6807\u7b7e\u5e76\u4e0d\u662f\u968f\u610f\u547d\u540d --&gt;\n&lt;beans xmlns=&quot;http:\/\/www.springframework.org\/schema\/beans&quot;\n  xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot;\n  xsi:schemaLocation=&quot;http:\/\/www.springframework.org\/schema\/beans\n    https:\/\/www.springframework.org\/schema\/beans\/spring-beans.xsd&quot;&gt;\n\n  &lt;bean id=&quot;...&quot; [1] class=&quot;...&quot; [2]&gt;  \n    &lt;!-- collaborators and configuration for this bean go here --&gt;\n  &lt;\/bean&gt;\n\n  &lt;bean id=&quot;...&quot; class=&quot;...&quot;&gt;\n    &lt;!-- collaborators and configuration for this bean go here --&gt;\n  &lt;\/bean&gt;\n  &lt;!-- more bean definitions go here --&gt;\n&lt;\/beans&gt;<\/code><\/pre>\n<p>2\u3001\\<bean \/> \u6807\u7b7e == \u7ec4\u4ef6\u4fe1\u606f\u58f0\u660e<\/p>\n<ul>\n<li>\n<p><code>id<\/code> \u5c5e\u6027\u662f\u6807\u8bc6\u5355\u4e2a Bean \u5b9a\u4e49\u7684\u5b57\u7b26\u4e32\u3002<\/p>\n<\/li>\n<li>\n<p><code>class<\/code> \u5c5e\u6027\u5b9a\u4e49 Bean \u7684\u7c7b\u578b\u5e76\u4f7f\u7528\u5b8c\u5168\u9650\u5b9a\u7684\u7c7b\u540d\u3002<\/p>\n<\/li>\n<\/ul>\n<h4>2\u3001\u5b9e\u4f8b\u5316IOC\u5bb9\u5668<\/h4>\n<p>1\u3001\u63d0\u4f9b\u7ed9 ApplicationContext \u6784\u9020\u51fd\u6570\u7684\u4f4d\u7f6e\u8def\u5f84\u662f\u8d44\u6e90\u5b57\u7b26\u4e32\u5730\u5740\uff0c\u5141\u8bb8\u5bb9\u5668\u4ece\u5404\u79cd\u5916\u90e8\u8d44\u6e90\uff08\u5982\u672c\u5730\u6587\u4ef6\u7cfb\u7edf\u3001Java CLASSPATH \u7b49\uff09\u52a0\u8f7d\u914d\u7f6e\u5143\u6570\u636e\u3002<\/p>\n<p>2\u3001\u4f8b\u5b50\uff08\u4f2a\u4ee3\u7801\uff09<\/p>\n<pre><code class=\"language-java\">\/\/\u5b9e\u4f8b\u5316ioc\u5bb9\u5668,\u8bfb\u53d6\u5916\u90e8\u914d\u7f6e\u6587\u4ef6,\u6700\u7ec8\u4f1a\u5728\u5bb9\u5668\u5185\u8fdb\u884cioc\u548cdi\u52a8\u4f5c\nApplicationContext context = \n           new ClassPathXmlApplicationContext(&quot;services.xml&quot;, &quot;daos.xml&quot;);<\/code><\/pre>\n<h4>3\u3001\u83b7\u53d6Bean\uff08\u7ec4\u4ef6\uff09<\/h4>\n<p>1\u3001ApplicationContext \u662f\u4e00\u4e2a\u9ad8\u7ea7\u5de5\u5382\u7684\u63a5\u53e3\uff0c\u80fd\u591f\u7ef4\u62a4\u4e0d\u540c bean \u53ca\u5176\u4f9d\u8d56\u9879\u7684\u6ce8\u518c\u8868\u3002\u901a\u8fc7\u4f7f\u7528\u65b9\u6cd5 T getBean(String name, Class requiredType) \uff0c\u60a8\u53ef\u4ee5\u68c0\u7d22 bean \u7684\u5b9e\u4f8b\u3002<\/p>\n<p>2\u3001\u4f8b\u5b50\uff08\u4f2a\u4ee3\u7801\uff09<\/p>\n<pre><code class=\"language-java\">\/\/\u521b\u5efaioc\u5bb9\u5668\u5bf9\u8c61\uff0c\u6307\u5b9a\u914d\u7f6e\u6587\u4ef6\uff0cioc\u4e5f\u5f00\u59cb\u5b9e\u4f8b\u7ec4\u4ef6\u5bf9\u8c61\nApplicationContext context = new ClassPathXmlApplicationContext(&quot;services.xml&quot;, &quot;daos.xml&quot;);\n\/\/\u83b7\u53d6ioc\u5bb9\u5668\u7684\u7ec4\u4ef6\u5bf9\u8c61\nPetStoreService service = context.getBean(&quot;petStore&quot;, PetStoreService.class);\n\/\/\u4f7f\u7528\u7ec4\u4ef6\u5bf9\u8c61\nList&lt;String&gt; userList = service.getUsernameList();<\/code><\/pre>\n<h3>4\u3001\u57fa\u4e8eXML\u7ba1\u7406Bean<\/h3>\n<h4>1\u3001\u642d\u5efa\u5b50\u6a21\u5757Spring6-ioc-xml1<\/h4>\n<h5>1\u3001\u642d\u5efa\u6a21\u5757<\/h5>\n<p>1\u3001\u642d\u5efa\u65b9\u5f0f\u5982\uff1aSpring-first<\/p>\n<h5>2\u3001\u5f15\u5165\u914d\u7f6e\u6587\u4ef6<\/h5>\n<p>1\u3001\u5f15\u5165Spring-first\u6a21\u5757\u914d\u7f6e\u6587\u4ef6\uff1abeans.xml\u3001log4j2.xml<\/p>\n<h5>3\u3001\u6dfb\u52a0\u4f9d\u8d56<\/h5>\n<pre><code>&lt;dependencies&gt;\n        &lt;!--spring context\u4f9d\u8d56--&gt;\n        &lt;!--\u5f53\u4f60\u5f15\u5165Spring Context\u4f9d\u8d56\u4e4b\u540e\uff0c\u8868\u793a\u5c06Spring\u7684\u57fa\u7840\u4f9d\u8d56\u5f15\u5165\u4e86--&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.springframework&lt;\/groupId&gt;\n            &lt;artifactId&gt;spring-context&lt;\/artifactId&gt;\n            &lt;version&gt;6.0.2&lt;\/version&gt;\n        &lt;\/dependency&gt;\n\n        &lt;!--junit5\u6d4b\u8bd5--&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.junit.jupiter&lt;\/groupId&gt;\n            &lt;artifactId&gt;junit-jupiter-api&lt;\/artifactId&gt;\n            &lt;version&gt;5.3.1&lt;\/version&gt;\n        &lt;\/dependency&gt;\n\n        &lt;!--log4j2\u7684\u4f9d\u8d56--&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.apache.logging.log4j&lt;\/groupId&gt;\n            &lt;artifactId&gt;log4j-core&lt;\/artifactId&gt;\n            &lt;version&gt;2.19.0&lt;\/version&gt;\n        &lt;\/dependency&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.apache.logging.log4j&lt;\/groupId&gt;\n            &lt;artifactId&gt;log4j-slf4j2-impl&lt;\/artifactId&gt;\n            &lt;version&gt;2.19.0&lt;\/version&gt;\n        &lt;\/dependency&gt;\n    &lt;\/dependencies&gt;<\/code><\/pre>\n<h4>3\u3001\u5b9e\u9a8c\u4e00\uff1a\u83b7\u53d6bean<\/h4>\n<p>1\u3001\u524d\u63d0\u521b\u5efaUser\u7c7b\u3001\u8fd8\u6709TestUser\u7c7b<\/p>\n<p>2\u3001User\u7c7b<\/p>\n<pre><code>package com.atqt.spring6_first_ico_xml1;\n\npublic class User {\n    private String name;\n    private Integer age;\n\n    public void run(){\n        System.out.println(&quot;run..........&quot;);\n    }\n}<\/code><\/pre>\n<p>2\u3001TestUser\u7c7b<\/p>\n<pre><code>package com.atqt.spring6;\n\nimport org.junit.jupiter.api.Test;\nimport org.slf4j.Logger;\nimport org.slf4j.LoggerFactory;\nimport org.springframework.context.ApplicationContext;\nimport org.springframework.context.support.ClassPathXmlApplicationContext;\n\npublic class TestUser {\n\/\/    \u521b\u5efaLogger\u5bf9\u8c61\n    private Logger logger = LoggerFactory.getLogger(TestUser.class);\n\n    @Test\n    public void testUserObjeect(){\n\/\/        \u52a0\u8f7dspring\u7684\u914d\u7f6e\u6587\u4ef6\uff0c\u5bf9\u8c61\u521b\u5efa\n        ApplicationContext context = new ClassPathXmlApplicationContext(&quot;bean.xml&quot;);\n\/\/        \u83b7\u53d6\u521b\u5efa\u7684\u5bf9\u8c61\n        User user = (User) context.getBean(&quot;user&quot;);\n\/\/        \u4f7f\u7528\u5bf9\u8c61\u8c03\u7528\u65b9\u6cd5\u8fdb\u884c\u6d4b\u8bd5\n        user.add();\n\n\/\/        \u624b\u52a8\u5199\u65e5\u5fd7\n        logger.info(&quot;#################\u6267\u884c\u8c03\u7528\u6210\u529f&quot;);\n\n    }\n\n    @Test\n    public void testUserObject1() throws Exception {\n\/\/        \u83b7\u53d6\u7c7b\u7684\u5bf9\u8c61\n        Class clazz = Class.forName(&quot;com.atqt.spring6.User&quot;);\n\/\/        \u8c03\u7528\u65b9\u6cd5\u521b\u5efa\u5bf9\u8c61\n        User user = (User) clazz.getDeclaredConstructor().newInstance();\n        System.out.println(user);\n    }\n}<\/code><\/pre>\n<p>3\u3001bean.xml\u6587\u4ef6<\/p>\n<pre><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;beans xmlns=&quot;http:\/\/www.springframework.org\/schema\/beans&quot;\n       xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot;\n       xsi:schemaLocation=&quot;http:\/\/www.springframework.org\/schema\/beans http:\/\/www.springframework.org\/schema\/beans\/spring-beans.xsd&quot;&gt;\n&lt;!--    \u5bf9\u8c61\u521b\u5efa--&gt;\n    &lt;bean id=&quot;user&quot; class=&quot;com.atqt.spring6_first_ico_xml1.User&quot;&gt;&lt;\/bean&gt;\n&lt;\/beans&gt;<\/code><\/pre>\n<h5>1\u3001\u65b9\u5f0f\u4e00\uff1a\u83b7\u53d6id<\/h5>\n<pre><code>ApplicationContext context = new ClassPathXmlApplicationContext(&quot;bean.xml&quot;);\n\/\/        \u6839\u636eid\u83b7\u53d6bean\n        User user1 = (User) context.getBean(&quot;user&quot;);\n        System.out.println(&quot;\u6839\u636eid\u83b7\u53d6bean&quot;+user1);<\/code><\/pre>\n<h5>2\u3001\u65b9\u5f0f\u4e8c\uff1a\u6839\u636e\u7c7b\u578b\u83b7\u53d6<\/h5>\n<pre><code>\/\/        \u6839\u636e\u7c7b\u578b\u83b7\u53d6\n        User user2 = (User) context.getBean(&quot;user&quot;);\n        System.out.println(&quot;\u6839\u636e\u7c7b\u578b\u83b7\u53d6bean&quot;+user2);<\/code><\/pre>\n<h5>3\u3001\u65b9\u5f0f\u4e09\uff1a\u6839\u636eid\u548c\u7c7b\u578b<\/h5>\n<pre><code>\/\/        \u6839\u636eid\u548c\u7c7b\u578b\u83b7\u53d6bean\n        User user3 = (User) context.getBean(&quot;user&quot;, User.class);\n        System.out.println(&quot;\u6839\u636eid\u548c\u7c7b\u578b\u83b7\u53d6bean&quot;+user3);<\/code><\/pre>\n<h5>4\u3001\u6ce8\u610f<\/h5>\n<p>1\u3001\u5f53\u6839\u636e\u7c7b\u578b\u83b7\u53d6bean\u65f6\uff0c\u8981\u6c42IOC\u5bb9\u5668\u4e2d\u6307\u5b9a\u7c7b\u578b\u7684bean\u6709\u4e14\u53ea\u6709\u4e00\u4e2a<\/p>\n<p>2\u3001\u5982\u679cbean\u914d\u7f6e\u4e86\u4e24\u4e2a\uff0c\u800c\u4e14\u6839\u636e\u7c7b\u578b\u83b7\u53d6bean\u7684\u65f6\u5019\uff0c\u5c31\u4f1a\u62a5\u5f02\u5e38<\/p>\n<p>3\u3001\u5f02\u5e38\u539f\u56e0\u662f\uff1a\u53ea\u5e0c\u671b\u5339\u914d1\u4e2a\u5355\u5b9e\u4f8b\u7684bean\u5bf9\u8c61\uff0c\u4f46\u662f\u627e\u5230\u4e862\u4e2a<\/p>\n<h5>5\u3001\u6269\u5c55<\/h5>\n<p>1\u3001\u5982\u679c\u7ec4\u4ef6\u7c7b\u5b9e\u73b0\u4e86\u63a5\u53e3\uff0c\u6839\u636e\u63a5\u53e3\u7c7b\u578b\u53ef\u4ee5\u83b7\u53d6bean\u5417<\/p>\n<p>\u7b54\u6848\uff1a\u53ef\u4ee5\uff0c\u524d\u63d0\u662fbean\u552f\u4e00<\/p>\n<p>2\u3001\u5982\u679c\u4e00\u4e2a\u63a5\u53e3\u6709\u591a\u4e2a\u5b9e\u73b0\u7c7b\uff0c\u8fd9\u4e9b\u5b9e\u73b0\u7c7b\u90fd\u914d\u7f6e\u4e86bean\uff0c\u6839\u636e\u63a5\u53e3\u7c7b\u578b\u53ef\u4ee5\u83b7\u53d6bean\u5417<\/p>\n<p>\u7b54\u6848\uff1a\u4e0d\u53ef\u4ee5\uff0c\u56e0\u4e3abean\u4e0d\u552f\u4e00        <\/p>\n<h5>6\u3001\u7ed3\u8bba<\/h5>\n<p>1\u3001\u6839\u636e\u7c7b\u578b\u6765\u83b7\u53d6bean\u65f6\uff0c\u5728\u6ee1\u8db3bean\u552f\u4e00\u6027\u7684\u524d\u63d0\u4e0b\uff0c\u5176\u5b9e\u53ea\u662f\u770b\uff1a\u300e\u5bf9\u8c61 <strong>instanceof<\/strong> \u6307\u5b9a\u7684\u7c7b\u578b\u300f\u7684\u8fd4\u56de\u7ed3\u679c\uff0c\u53ea\u8981\u8fd4\u56de\u7684\u662ftrue\u5c31\u53ef\u4ee5\u8ba4\u5b9a\u4e3a\u548c\u7c7b\u578b\u5339\u914d\uff0c\u80fd\u591f\u83b7\u53d6\u5230\u3002<\/p>\n<p>2\u3001java\u4e2d\uff0cinstanceof\u8fd0\u7b97\u7b26\u7528\u4e8e\u5224\u65ad\u524d\u9762\u7684\u5bf9\u8c61\u662f\u5426\u662f\u540e\u9762\u7684\u7c7b\uff0c\u6216\u5176\u5b50\u7c7b\u3001\u5b9e\u73b0\u7c7b\u7684\u5b9e\u4f8b\u3002\u5982\u679c\u662f\u8fd4\u56detrue\uff0c\u5426\u5219\u8fd4\u56defalse\u3002\u4e5f\u5c31\u662f\u8bf4\uff1a\u7528instanceof\u5173\u952e\u5b57\u505a\u5224\u65ad\u65f6\uff0c instanceof<\/p>\n<p>\u64cd\u4f5c\u7b26\u7684\u5de6\u53f3\u64cd\u4f5c\u5fc5\u987b\u6709\u7ee7\u627f\u6216\u5b9e\u73b0\u5173\u7cfb<\/p>\n<h4>3\u3001\u5b9e\u9a8c\u4e8c\uff1aIoC\u57fa\u4e8eXML\u7ba1\u7406Bean\u4f9d\u8d56\u6ce8\u5165<\/h4>\n<p>1\u3001\u521b\u5efa\u4e00\u4e2a\u7c7b\uff0c\u7ed9\u4e00\u4e2a\u7c7b\u4e2d\u6ce8\u5165\u5c5e\u6027\u503c<\/p>\n<h5>1\u3001\u666e\u901a\u65b9\u6cd5\u6ce8\u5165<\/h5>\n<p>1\u3001\u5c31\u662f\u521b\u5efa\u4e00\u4e2a\u7c7b\uff0c\u5b9a\u4e49\u4e24\u4e2a\u79c1\u6709\u5c5e\u6027<\/p>\n<p>2\u3001\u8bbe\u7f6eset\u65b9\u6cd5\uff0c\u901a\u8fc7\u521b\u5efa\u5bf9\u8c61.set()\u8fdb\u884c\u503c\u7684\u8d4b\u4e88<\/p>\n<p>3\u3001\u4e5f\u53ef\u4ee5\u901a\u8fc7\u6709\u53c2\u6784\u9020\u5668\uff0c\u7136\u540e\u5c31\u53ef\u4ee5\u5728\u521b\u5efa\u5bf9\u8c61\u7684\u65f6\u5019\uff0c\u8d4b\u503c<\/p>\n<h5>2\u3001\u65b9\u6cd5\u4e00\uff1asetter\u6ce8\u5165<\/h5>\n<p>1\u3001\u5148\u521b\u5efa\u7c7b\uff0c\u5b9a\u4e49\u5c5e\u6027\uff0c\u8bbe\u7f6eget\u548cset\u65b9\u6cd5<\/p>\n<pre><code>package com.atqt.di;\n\npublic class Book {\n    private String bname;\n    private String author;\n\n    public Book() {\n    }\n    public Book(String bname, String author) {\n        this.bname = bname;\n        this.author = author;\n    }\n    public String getBname() {\n        return bname;\n    }\n    public void setBname(String bname) {\n        this.bname = bname;\n    }\n    public String getAuthor() {\n        return author;\n    }\n    public void setAuthor(String author) {\n        this.author = author;\n    }\n\/\/    \u539f\u751f\u5199\u6cd5\n    public static void main(String[] args) {\n        Book book = new Book();\n        book.setBname(&quot;java&quot;);\n        book.setBname(&quot;\u5c1a\u7845\u8c37&quot;);\n    }\n\/\/    \u6784\u9020\u5668\u5199\u6cd5\n    Book book1 = new Book(&quot;java1&quot;,&quot;\u5c1a\u7845\u8c37111&quot;);\n}<\/code><\/pre>\n<p>2\u3001\u5728Spring\u4e2d\u8fdb\u884c\u914d\u7f6e<\/p>\n<pre><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;beans xmlns=&quot;http:\/\/www.springframework.org\/schema\/beans&quot;\n       xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot;\n       xsi:schemaLocation=&quot;http:\/\/www.springframework.org\/schema\/beans http:\/\/www.springframework.org\/schema\/beans\/spring-beans.xsd&quot;&gt;\n    &lt;!--        \u901a\u8fc7set\u65b9\u6cd5\u6ce8\u5165--&gt;\n    &lt;bean id=&quot;book&quot; class=&quot;com.atqt.spring.iocxm.di.Book&quot;&gt;\n        &lt;property name=&quot;bName&quot; value=&quot;\u524d\u7aef\u5f00\u53d1&quot;&gt;&lt;\/property&gt;\n        &lt;property name=&quot;author&quot; value=&quot;\u5c1a\u7845\u8c37&quot;&gt;&lt;\/property&gt;\n    &lt;\/bean&gt;\n&lt;\/beans&gt;<\/code><\/pre>\n<p>3\u3001\u8fdb\u884c\u6d4b\u8bd5\uff1a\u7f16\u5199\u6d4b\u8bd5\u7c7b<\/p>\n<pre><code>package com.atqt.spring.iocxm.di;\n\nimport org.junit.jupiter.api.Test;\nimport org.springframework.context.ApplicationContext;\nimport org.springframework.context.support.ClassPathXmlApplicationContext;\n\npublic class TestBook {\n\n    @Test\n    public void testSetter(){\n        ApplicationContext context = new ClassPathXmlApplicationContext(&quot;bean-di.xml&quot;);\n        Book book = context.getBean(&quot;book&quot;, Book.class);\n        System.out.println(book);\n\n    }\n}<\/code><\/pre>\n<h4>4\u3001\u5b9e\u9a8c\u4e09\uff1a\u4f9d\u8d56\u6ce8\u5165\u2014\u6784\u9020\u5668\u6ce8\u5165<\/h4>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/zyg.luchers.cn\/wp-content\/uploads\/2024\/04\/image-20231008201815879.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"http:\/\/zyg.luchers.cn\/wp-content\/uploads\/2024\/04\/image-20231008201815879.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20231008201815879\" \/><\/div><\/p>\n<h5>1\u3001\u4f20\u7edf\u65b9\u6cd5\u6ce8\u5165<\/h5>\n<p>1\u3001\u5c31\u662f\u521b\u5efa\u4e00\u4e2a\u7c7b\u7684\u65f6\u5019new xxx(\u53c2\u65701\uff0c\u53c2\u65702)<\/p>\n<p>2\u3001\u901a\u8fc7\u6784\u9020\u5668<\/p>\n<h5>1\u3001\u5728Book\u7c7b\u4e2d\u6dfb\u52a0\u6709\u53c2\u6784\u9020\u5668<\/h5>\n<pre><code>\/\/    \u6709\u53c2\u6784\u9020\u5668\n    public Book(String bName, String author) {\n        this.bName = bName;\n        this.author = author;\n        System.out.println(&quot;\u6709\u53c2\u6570\u6267\u884c\u4e86&quot;);\n    }<\/code><\/pre>\n<h5>2\u3001\u914d\u7f6ebean<\/h5>\n<pre><code>&lt;!--    \u901a\u8fc7\u6784\u9020\u65b9\u6cd5\u6ce8\u5165--&gt;\n    &lt;bean id=&quot;bookCon&quot; class=&quot;com.atqt.spring.iocxm.di.Book&quot;&gt;\n        &lt;constructor-arg name=&quot;bName&quot; value=&quot;java\u5b66\u4e60&quot;&gt;&lt;\/constructor-arg&gt;\n        &lt;constructor-arg name=&quot;author&quot; value=&quot;\u5c1a\u7845\u8c37&quot;&gt;&lt;\/constructor-arg&gt;\n\n    &lt;\/bean&gt;<\/code><\/pre>\n<h5>3\u3001\u7f16\u5199\u6d4b\u8bd5\u4ee3\u7801<\/h5>\n<pre><code>    @Test\n    public void testConst(){\n        ApplicationContext context = new ClassPathXmlApplicationContext(&quot;bean-di.xml&quot;);\n        Book book = context.getBean(&quot;bookCon&quot;, Book.class);\n        System.out.println(book);\n\n    }<\/code><\/pre>\n<h4>5\u3001\u5b9e\u9a8c\u56db\uff1a\u7279\u6b8a\u503c\u5904\u7406<\/h4>\n<h5>1\u3001\u5b57\u9762\u91cf\u8d4b\u503c<\/h5>\n<p>1\u3001\u5b57\u9762\u91cf\u8d4b\u503c<\/p>\n<p>2\u3001\u5c31\u548c\u666e\u901a\u8d4b\u503c\u4e00\u6837<\/p>\n<pre><code>&lt;constructor-arg name=&quot;author&quot; value=&quot;\u5c1a\u7845\u8c37&quot;&gt;&lt;\/constructor-arg&gt;<\/code><\/pre>\n<h5>2\u3001null\u503c<\/h5>\n<p>1\u3001\u5c31\u662f\u5982\u4f55\u8868\u793anull\u503c<\/p>\n<p>2\u3001\u5728\u914d\u7f6e\u4e2d\u8bbe\u7f6e<\/p>\n<pre><code>    &lt;!--        \u901a\u8fc7set\u65b9\u6cd5\u6ce8\u5165--&gt;\n    &lt;bean id=&quot;book&quot; class=&quot;com.atqt.spring.iocxm.di.Book&quot;&gt;\n        &lt;property name=&quot;others&quot;&gt;\n            &lt;null&gt;&lt;\/null&gt;\n        &lt;\/property&gt;\n    &lt;\/bean&gt;<\/code><\/pre>\n<h5>3\u3001xml\u5b9e\u4f53<\/h5>\n<p>1\u3001\u5c31\u662f\u5728xml\u4e2d\u7684\u5c0f\u62ec\u5219\u53f7&lt;\u4e0d\u80fd\u968f\u4fbf\u5199<\/p>\n<p>2\u3001\u4f7f\u7528xml\u5b9e\u4f53\u4ee3\u66ff<\/p>\n<p>3\u3001&lt;\uff1a\\&lt;<\/p>\n<p>4\u3001&gt;\uff1a\\&gt;<\/p>\n<p>5\u3001\u914d\u7f6e\u8bbe\u7f6e<\/p>\n<pre><code>    &lt;!--        \u901a\u8fc7set\u65b9\u6cd5\u6ce8\u5165--&gt;\n    &lt;bean id=&quot;book&quot; class=&quot;com.atqt.spring.iocxm.di.Book&quot;&gt;\n        &lt;property name=&quot;others&quot; value=&quot;&lt;\u54c8\u54c8&gt;&quot;&gt;&lt;\/property&gt;\n    &lt;\/bean&gt;<\/code><\/pre>\n<h5>4\u3001CDATA\u8282<\/h5>\n<p>1\u3001\u662fxml\u4e2d\u7684\u7279\u6709\u7684<\/p>\n<p>2\u3001\u53ef\u4ee5\u5305\u542bxml\u4e2d\u7684\u7279\u6b8a\u7b26\u53f7<\/p>\n<p>3\u3001\u914d\u7f6e\u8bbe\u7f6e<\/p>\n<pre><code>    &lt;!--        \u901a\u8fc7set\u65b9\u6cd5\u6ce8\u5165--&gt;\n    &lt;bean id=&quot;book&quot; class=&quot;com.atqt.spring.iocxm.di.Book&quot;&gt;\n        &lt;property name=&quot;others&quot;&gt;\n            &lt;value&gt;&lt;![CDATA[a&lt;bhhhhhh]]&gt;&lt;\/value&gt;\n        &lt;\/property&gt;\n    &lt;\/bean&gt;<\/code><\/pre>\n<h4>6\u3001\u5b9e\u9a8c\u4e94\uff1a\u4e3a\u5bf9\u8c61\u7c7b\u578b\u5c5e\u6027\u8d4b\u503c<\/h4>\n<h5>1\u3001\u642d\u5efa\u524d\u671f\u73af\u5883<\/h5>\n<p>1\u3001Emp\u7c7b<\/p>\n<pre><code>package com.atqt.spring.iocxm.ditest;\n\npublic class Emp {\n\n\/\/    \u5bf9\u8c61\u7c7b\u578b\u5c5e\u6027\uff1a\u5458\u5de5\u5c5e\u4e8e\u67d0\u4e2a\u90e8\u95e8\n    private Dept dept;\n\n    private String ename;\n    private Integer age;\n    public void work(){\n        System.out.println(ename+&quot;empWork......&quot;+age);\n        dept.info();\n    }\n    public Dept getDept() {\n        return dept;\n    }\n    public void setDept(Dept dept) {\n        this.dept = dept;\n    }\n    public String getEname() {\n        return ename;\n    }\n    public void setEname(String ename) {\n        this.ename = ename;\n    }\n    public Integer getAge() {\n        return age;\n    }\n    public void setAge(Integer age) {\n        this.age = age;\n    }\n}<\/code><\/pre>\n<p>2\u3001Dept\u7c7b<\/p>\n<pre><code>package com.atqt.spring.iocxm.ditest;\n\/\/\u90e8\u95e8\npublic class Dept {\n    private String dName;\n\n    public void info(){\n        System.out.println(&quot;\u90e8\u95e8\u8f93\u51fa..........&quot;+dName);\n    }\n\n    public String getdName() {\n        return dName;\n    }\n\n    public void setdName(String dName) {\n        this.dName = dName;\n    }\n}<\/code><\/pre>\n<h5>2\u3001\u65b9\u6cd5\u4e00\uff1a\u5916\u90e8bean\u5f15\u5165<\/h5>\n<p>1\u3001\u5148\u7528\u914d\u7f6e\u6587\u4ef6\u521b\u5efa\u4e00\u4e2abean-ditest.xml \u6587\u4ef6<\/p>\n<p>2\u3001\u521b\u5efa\u4e24\u4e2a\u7c7b\u7528bean\u6807\u7b7e\u521b\u5efa<\/p>\n<p>3\u3001\u7136\u540e\u5728\u4e00\u4e2a\u65b0\u7684bean\u4e2d\u5f15\u5165\u521b\u5efa\u597d\u7684id=dept\u7684bean\u6807\u7b7e\uff0c\u7136\u540e\u518d\u6839\u636eid\u6ce8\u5165\u5c5e\u6027\u503c\uff08\u5c31\u76f8\u5f53\u4e8e\u5f15\u5165\u5916\u90e8\u7684bean\uff09<\/p>\n<p>4\u3001\u4e2a\u4eba\u7406\u89e3\uff1a\u5c31\u76f8\u5f53\u4e8e\u4f7f\u7528\u4e24\u4e2a\u914d\u7f6e\u5bf9\u8c61\u53d8\u91cf\uff0c\u7136\u540e\u4f7f\u7528ref\u6807\u7b7e\u8c03\u7528\u7c7b\uff0c\u4ece\u800c\u8fbe\u5230\u5916\u90e8\u5f15\u5165\u7684\u6548\u679c<\/p>\n<p>4\u3001\u683c\u5f0f<\/p>\n<pre><code>&lt;bean id=&quot;xxxx&quot; value=&quot;xxxx&quot;&gt;\n&lt;bean id=&quot;yyyy&quot; value=&quot;xxxx&quot;&gt;\n&lt;.... ref=&quot;\u6240\u9700\u8981\u5f15\u5165\u7684\u5916\u90e8\u7c7b&quot;&gt;\n\u5176\u4ed6\u8be5\u8d4b\u503c\u8d4b\u503c\uff0c\u8be5\u7ed9\u5b9a\u4e49\u5c5e\u6027\u5c31\u5b9a\u4e49\u5c5e\u6027<\/code><\/pre>\n<p>5\u3001\u4ee3\u7801\u5b9e\u73b0<\/p>\n<pre><code class=\"language-xml\">        &lt;!--\n        1\u3001\u521b\u5efadep\u548cemp\u7c7b\u7684\u5bf9\u8c61\n        2\u3001\u5728emp\u7684bean\u4e2d\uff0c\u4f7f\u7528property\u5f15\u5165dept\u7684bean\n        --&gt;\n        &lt;bean id=&quot;dept&quot; class=&quot;com.atqt.spring.iocxm.ditest.Dept&quot;&gt;\n                &lt;property name=&quot;dName&quot; value=&quot;\u5b89\u4fdd\u90e8&quot;&gt;&lt;\/property&gt;\n        &lt;\/bean&gt;\n        &lt;bean id=&quot;emp&quot; class=&quot;com.atqt.spring.iocxm.ditest.Emp&quot;&gt;\n&lt;!--                \u6700\u666e\u901a\u7684\u5c5e\u6027\u6ce8\u5165--&gt;\n                &lt;property name=&quot;ename&quot; value=&quot;lucy&quot;&gt;&lt;\/property&gt;\n                &lt;property name=&quot;age&quot; value=&quot;50&quot;&gt;&lt;\/property&gt;\n&lt;!--                \u6ce8\u5165\u5bf9\u8c61\u7c7b\u578b\u7684\u5c5e\u6027--&gt;\n            &lt;property name=&quot;dept&quot; ref=&quot;dept&quot;&gt;&lt;\/property&gt;\n\n        &lt;\/bean&gt;<\/code><\/pre>\n<h5>3\u3001\u65b9\u6cd5\u4e8c\uff1a\u5185\u90e8\u7c7b\u5f15\u7528<\/h5>\n<p>1\u3001\u5c31\u662f\u5148\u7528\u914d\u7f6e\u6587\u4ef6\u521b\u5efa\u4e00\u4e2abean\uff0cbean\u4e2d\u521b\u5efa\u4e00\u4e2a\u7c7b\u5bf9\u8c61A<\/p>\n<p>2\u3001\u5728\u7c7b\u5bf9\u8c61A\u4e2d\u7684\u521b\u5efa\u4e00\u4e2aproperty\u6807\u7b7e<\/p>\n<p>3\u3001\u5728\u8fd9\u4e2aproperty\u6807\u7b7e\u4e2d\u521b\u5efa\u4e00\u4e2abean\u6807\u7b7e\uff0cbean\u4e2d\u521b\u5efa\u4e00\u4e2a\u5bf9\u8c61B<\/p>\n<p>4\u3001\u8fd9\u4e2a\u5c31\u662f\u5185\u90e8\u7c7b\u7684\u5f15\u7528<\/p>\n<p>5\u3001\u4f8b\u5b50<\/p>\n<pre><code class=\"language-xml\">&lt;bean id=&quot;emp2&quot; class=&quot;com.atqt.spring.iocxm.ditest.Emp&quot;&gt;\n        &lt;property name=&quot;ename&quot; value=&quot;\u739b\u5361\u5df4\u5361&quot;&gt;&lt;\/property&gt;\n        &lt;property name=&quot;age&quot; value=&quot;55&quot;&gt;&lt;\/property&gt;\n&lt;!--        \u5185\u90e8bean\u65b9\u5f0f\u6ce8\u5165--&gt;\n        &lt;property name=&quot;dept&quot;&gt;\n            &lt;bean id=&quot;dept2&quot; class=&quot;com.atqt.spring.iocxm.ditest.Dept&quot;&gt;\n                &lt;property name=&quot;dName&quot; value=&quot;\u725b\u9a6c\u90e8&quot;&gt;&lt;\/property&gt;\n            &lt;\/bean&gt;\n        &lt;\/property&gt;\n    &lt;\/bean&gt;<\/code><\/pre>\n<h5>4\u3001\u65b9\u6cd5\u4e09\uff1a\u7ea7\u8054\u5c5e\u6027\u8d4b\u503c<\/h5>\n<p>1\u3001\u5c31\u662f\u521b\u5efa\u4e24\u4e2abean\uff0c\u7528bean\u521b\u5efa\u4e24\u4e2a\u5bf9\u8c61<\/p>\n<p>2\u3001\u5728\u5bf9\u8c61A\u4e2d\u7684property\u4e2d\u5f15\u5165\u5bf9\u8c61B\uff0c\u7136\u540e\u901a\u8fc7\u5bf9\u8c61B.xxx\u5c5e\u6027\u6765\u64cd\u4f5c<\/p>\n<p>3\u3001\u4ee3\u7801\u5b9e\u73b0<\/p>\n<pre><code>&lt;!--    \u7b2c\u4e09\u79cd\u65b9\u5f0f \u7ea7\u8054\u8d4b\u503c--&gt;\n    &lt;bean id=&quot;dept3&quot; class=&quot;com.atqt.spring.iocxm.ditest.Dept&quot;&gt;\n        &lt;property name=&quot;dName&quot; value=&quot;\u54c8\u54c8\u54c8\u54c8&quot;&gt;&lt;\/property&gt;\n    &lt;\/bean&gt;\n\n    &lt;bean id=&quot;emp3&quot; class=&quot;com.atqt.spring.iocxm.ditest.Emp&quot;&gt;\n        &lt;property name=&quot;ename&quot; value=&quot;\u795e\u4ed9&quot;&gt;&lt;\/property&gt;\n        &lt;property name=&quot;age&quot; value=&quot;30&quot;&gt;&lt;\/property&gt;\n        &lt;property name=&quot;dept&quot; ref=&quot;dept3&quot;&gt;&lt;\/property&gt;\n        &lt;property name=&quot;dept.dName&quot; value=&quot;\u54c8\u54c8\u54c8\u54c82&quot;&gt;&lt;\/property&gt;\n    &lt;\/bean&gt;<\/code><\/pre>\n<h4>7\u3001\u5b9e\u9a8c\u516d\uff1a\u4e3a\u6570\u7ec4\u7c7b\u578b\u5c5e\u6027\u8d4b\u503c<\/h4>\n<h5>1\u3001\u73af\u5883<\/h5>\n<p>1\u3001\u73af\u5883\u548c\u5b9e\u9a8c\u4e94\u4e00\u6837<\/p>\n<p>2\u3001\u9700\u8981\u5728Emp\u7c7b\u4e2d\u6dfb\u52a0\u4e00\u4e2a\u6570\u7ec4\u7c7b\u578b\u53d8\u91cfloves<\/p>\n<h5>2\u3001\u65b9\u6cd5<\/h5>\n<p>1\u3001\u683c\u5f0f<\/p>\n<pre><code>&lt;!--        \u6ce8\u5165\u6570\u7ec4\u7c7b\u578b--&gt;\n        &lt;property name=&quot;loves&quot;&gt;\n            &lt;array&gt;\n                &lt;value&gt;\u6570\u7ec4\u5c5e\u6027\u503c&lt;\/value&gt;\n                &lt;value&gt;\u6570\u7ec4\u5c5e\u6027\u503c&lt;\/value&gt;\n                &lt;value&gt;\u6570\u7ec4\u5c5e\u6027\u503c&lt;\/value&gt;\n            &lt;\/array&gt;\n        &lt;\/property&gt;<\/code><\/pre>\n<h5>3\u3001\u5b9e\u73b0<\/h5>\n<p>1\u3001bean\u914d\u7f6e\u6587\u4ef6\u5b9e\u73b0<\/p>\n<pre><code>&lt;!--    \u6ce8\u5165\u6570\u7ec4\u7c7b\u578b\u5c5e\u6027--&gt;\n    &lt;bean id=&quot;dept&quot; class=&quot;com.atqt.spring.iocxm.ditest.Dept&quot;&gt;\n        &lt;property name=&quot;dName&quot; value=&quot;\u6280\u672f\u90e8&quot;&gt;&lt;\/property&gt;\n    &lt;\/bean&gt;\n\n    &lt;bean id=&quot;emp&quot; class=&quot;com.atqt.spring.iocxm.ditest.Emp&quot;&gt;\n&lt;!--        \u6ce8\u5165\u666e\u901a\u7684\u5c5e\u6027\u503c--&gt;\n        &lt;property name=&quot;ename&quot; value=&quot;lucy&quot;&gt;&lt;\/property&gt;\n        &lt;property name=&quot;age&quot; value=&quot;20&quot;&gt;&lt;\/property&gt;\n&lt;!--        \u5bf9\u8c61\u7c7b\u578b\u7684\u5c5e\u6027--&gt;\n        &lt;property name=&quot;dept&quot; ref=&quot;dept&quot;&gt;&lt;\/property&gt;\n&lt;!--        \u6ce8\u5165\u6570\u7ec4\u7c7b\u578b--&gt;\n        &lt;property name=&quot;loves&quot;&gt;\n            &lt;array&gt;\n                &lt;value&gt;\u62bd\u70df&lt;\/value&gt;\n                &lt;value&gt;\u5531\u6b4c&lt;\/value&gt;\n                &lt;value&gt;\u8df3\u821e&lt;\/value&gt;\n            &lt;\/array&gt;\n        &lt;\/property&gt;\n    &lt;\/bean&gt;<\/code><\/pre>\n<h4>8\u3001\u5b9e\u9a8c\u4e03\uff1a\u4e3a\u96c6\u5408list\u7c7b\u578b\u5c5e\u6027\u8d4b\u503c<\/h4>\n<h5>1\u3001\u73af\u5883<\/h5>\n<p>1\u3001\u548c\u5b9e\u9a8c\u516d\u4e00\u6837<\/p>\n<p>2\u3001\u9700\u8981\u591a\u5728Dept\u4e2d\u6dfb\u52a0\u4e00\u4e2alist\u96c6\u5408\u5bf9\u8c61<\/p>\n<pre><code>private List&lt;Emp&gt; empList;\n\u76f8\u5e94\u7684get\u548cset\u65b9\u6cd5<\/code><\/pre>\n<p>3\u3001\u5728Dept\u7c7b\u4e2dinfo\u65b9\u6cd5\u904d\u5386\u4e00\u4e0b\u96c6\u5408\uff0c\u4e3b\u8981\u662f\u65b9\u4fbf\u5b9e\u73b0<\/p>\n<h5>2\u3001\u4ee3\u7801\u5b9e\u73b0<\/h5>\n<pre><code class=\"language-xml\">&lt;!--    \u521b\u5efa\u96c6\u5408\u7c7b\u578b\u4f20\u5165emp\u5bf9\u8c61--&gt;\n    &lt;bean id=&quot;emp1&quot; class=&quot;com.atqt.spring.iocxm.ditest.Emp&quot;&gt;\n        &lt;property name=&quot;ename&quot; value=&quot;lucky1&quot;&gt;&lt;\/property&gt;\n        &lt;property name=&quot;age&quot; value=&quot;20&quot;&gt;&lt;\/property&gt;\n    &lt;\/bean&gt;\n    &lt;bean id=&quot;emp2&quot; class=&quot;com.atqt.spring.iocxm.ditest.Emp&quot;&gt;\n        &lt;property name=&quot;ename&quot; value=&quot;lucky2&quot;&gt;&lt;\/property&gt;\n        &lt;property name=&quot;age&quot; value=&quot;22&quot;&gt;&lt;\/property&gt;\n    &lt;\/bean&gt;\n\n    &lt;bean id=&quot;dept&quot; class=&quot;com.atqt.spring.iocxm.ditest.Dept&quot;&gt;\n        &lt;property name=&quot;dName&quot; value=&quot;\u6280\u672f\u90e8&quot;&gt;&lt;\/property&gt;\n        &lt;property name=&quot;empList&quot;&gt;\n            &lt;list&gt;\n                &lt;ref bean=&quot;emp1&quot;&gt;&lt;\/ref&gt;\n                &lt;ref bean=&quot;emp2&quot;&gt;&lt;\/ref&gt;\n            &lt;\/list&gt;\n        &lt;\/property&gt;\n    &lt;\/bean&gt;<\/code><\/pre>\n<h4>9\u3001\u5b9e\u9a8c\u516b\uff1a\u4e3aMap\u7c7b\u578b\u6570\u636e\u8d4b\u503c<\/h4>\n<h5>1\u3001\u73af\u5883<\/h5>\n<p>1\u3001Student.java<\/p>\n<pre><code>package com.atqt.spring.iocxm.dimap;\n\nimport java.util.Map;\n\npublic class Student {\n    private String sId;\n    private String sName;\n\n    private Map&lt;String ,Teacher&gt; teacherMap ;\n\n    public Map&lt;String, Teacher&gt; getTeacherMap() {\n        return teacherMap;\n    }\n\n    public void setTeacherMap(Map&lt;String, Teacher&gt; teacherMap) {\n        this.teacherMap = teacherMap;\n    }\n\n    public void run(){\n        System.out.println(&quot;\u5b66\u751f\u7f16\u53f7&quot;+sId+&quot;\u5b66\u751f\u7684\u59d3\u540d&quot;+sName);\n        System.out.println(teacherMap);\n    }\n\n    public String getsId() {\n        return sId;\n    }\n\n    public void setsId(String sId) {\n        this.sId = sId;\n    }\n\n    public String getsName() {\n        return sName;\n    }\n\n    public void setsName(String sName) {\n        this.sName = sName;\n    }\n\n}<\/code><\/pre>\n<p>2\u3001Teacher.java<\/p>\n<pre><code>package com.atqt.spring.iocxm.dimap;\n\npublic class Teacher {\n    private String tId;\n    private String tName;\n\n    public String gettId() {\n        return tId;\n    }\n\n    public void settId(String tId) {\n        this.tId = tId;\n    }\n\n    public String gettName() {\n        return tName;\n    }\n\n    public void settName(String tName) {\n        this.tName = tName;\n    }\n\n    @Override\n    public String toString() {\n        return &quot;Teacher{&quot; +\n                &quot;tId=&#039;&quot; + tId + &#039;\\&#039;&#039; +\n                &quot;, tName=&#039;&quot; + tName + &#039;\\&#039;&#039; +\n                &#039;}&#039;;\n    }\n}<\/code><\/pre>\n<h5>2\u3001\u683c\u5f0f<\/h5>\n<pre><code>&lt;bean id=&quot;student&quot; class=&quot;com.atqt.spring.iocxm.dimap.Student&quot;&gt;\n            &lt;property name=&quot;sId&quot; value=&quot;100&quot;&gt;&lt;\/property&gt;\n            &lt;property name=&quot;sName&quot; value=&quot;\u738b\u4e94\u8001\u5e08&quot;&gt;&lt;\/property&gt;\n\n&lt;!--            \u5728\u5b66\u751fbean\u4e2d\u6ce8\u5165map\u96c6\u5408\u7c7b\u578b\u5c5e\u6027--&gt;\n            &lt;property name=&quot;teacherMap&quot;&gt;\n                &lt;map&gt;\n                    &lt;entry&gt;\n                        &lt;key&gt;\n                        &lt;!--key:\u7684\u503c--&gt;\n                            &lt;value&gt;101&lt;\/value&gt;\n                        &lt;\/key&gt;\n                        &lt;!--           value:\u6ce8\u5165\u7684\u5bf9\u8c61--&gt;\n                        &lt;ref bean=&quot;teacher1&quot;&gt;&lt;\/ref&gt;\n                    &lt;\/entry&gt;\n                &lt;\/map&gt;\n            &lt;\/property&gt;\n        &lt;\/bean&gt;<\/code><\/pre>\n<h5>3\u3001\u914d\u7f6e\u6587\u4ef6<\/h5>\n<p>1\u3001bean-dimap.xml<\/p>\n<pre><code class=\"language-xml\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;beans xmlns=&quot;http:\/\/www.springframework.org\/schema\/beans&quot;\n       xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot; xmlns:util=&quot;http:\/\/www.springframework.org\/schema\/util&quot;\n       xsi:schemaLocation=&quot;http:\/\/www.springframework.org\/schema\/beans http:\/\/www.springframework.org\/schema\/beans\/spring-beans.xsd http:\/\/www.springframework.org\/schema\/util https:\/\/www.springframework.org\/schema\/util\/spring-util.xsd&quot;&gt;\n        &lt;bean id=&quot;teacher1&quot; class=&quot;com.atqt.spring.iocxm.dimap.Teacher&quot;&gt;\n            &lt;property name=&quot;tId&quot; value=&quot;001&quot;&gt;&lt;\/property&gt;\n            &lt;property name=&quot;tName&quot; value=&quot;\u5f20\u4e09\u8001\u5e08&quot;&gt;&lt;\/property&gt;\n        &lt;\/bean&gt;\n\n        &lt;bean id=&quot;teacher2&quot; class=&quot;com.atqt.spring.iocxm.dimap.Teacher&quot;&gt;\n            &lt;property name=&quot;tId&quot; value=&quot;002&quot;&gt;&lt;\/property&gt;\n            &lt;property name=&quot;tName&quot; value=&quot;\u5f20\u4e09\u8001\u5e08&quot;&gt;&lt;\/property&gt;\n        &lt;\/bean&gt;\n\n        &lt;bean id=&quot;teacher3&quot; class=&quot;com.atqt.spring.iocxm.dimap.Teacher&quot;&gt;\n            &lt;property name=&quot;tId&quot; value=&quot;003&quot;&gt;&lt;\/property&gt;\n            &lt;property name=&quot;tName&quot; value=&quot;\u674e\u56db\u8001\u5e08&quot;&gt;&lt;\/property&gt;\n        &lt;\/bean&gt;\n\n        &lt;bean id=&quot;student&quot; class=&quot;com.atqt.spring.iocxm.dimap.Student&quot;&gt;\n            &lt;property name=&quot;sId&quot; value=&quot;100&quot;&gt;&lt;\/property&gt;\n            &lt;property name=&quot;sName&quot; value=&quot;\u738b\u4e94\u8001\u5e08&quot;&gt;&lt;\/property&gt;\n\n&lt;!--            \u5728\u5b66\u751fbean\u4e2d\u6ce8\u5165map\u96c6\u5408\u7c7b\u578b\u5c5e\u6027--&gt;\n            &lt;property name=&quot;teacherMap&quot;&gt;\n                &lt;map&gt;\n                    &lt;entry&gt;\n                        &lt;key&gt;\n                            &lt;value&gt;101&lt;\/value&gt;\n                        &lt;\/key&gt;\n                        &lt;ref bean=&quot;teacher1&quot;&gt;&lt;\/ref&gt;\n                    &lt;\/entry&gt;\n                    &lt;entry&gt;\n                        &lt;key&gt;\n                            &lt;value&gt;102&lt;\/value&gt;\n                        &lt;\/key&gt;\n                        &lt;ref bean=&quot;teacher2&quot;&gt;&lt;\/ref&gt;\n                    &lt;\/entry&gt;\n                    &lt;entry&gt;\n                        &lt;key&gt;\n                            &lt;value&gt;103&lt;\/value&gt;\n                        &lt;\/key&gt;\n                        &lt;ref bean=&quot;teacher3&quot;&gt;&lt;\/ref&gt;\n                    &lt;\/entry&gt;\n\n                &lt;\/map&gt;\n            &lt;\/property&gt;\n        &lt;\/bean&gt;\n\n&lt;\/beans&gt;<\/code><\/pre>\n<p>2\u3001\u6d4b\u8bd5\u4ee3\u7801<\/p>\n<p>1\u3001Test.java<\/p>\n<pre><code class=\"language-java\">package com.atqt.spring.iocxm.dimap;\n\nimport org.springframework.context.ApplicationContext;\nimport org.springframework.context.support.ClassPathXmlApplicationContext;\n\npublic class Test {\n    public static void main(String[] args) {\n        ApplicationContext context = new ClassPathXmlApplicationContext(&quot;bean-dimap.xml&quot;);\n        Student student = (Student) context.getBean(&quot;student&quot;);\n        student.run();\n    }\n}<\/code><\/pre>\n<h4>10\u3001\u5b9e\u9a8c\u4e5d\uff1a\u4e3a\u5f15\u7528\u96c6\u5408\u7c7b\u578b\u5728bean<\/h4>\n<h5>1\u3001\u73af\u5883<\/h5>\n<p>1\u3001\u65b0\u52a0\u4e00\u4e2aLesson.java<\/p>\n<pre><code>package com.atqt.spring.iocxm.dimap;\n\npublic class Lesson {\n    private String lessonName;\n\n    public String getLessonName() {\n        return lessonName;\n    }\n\n    public void setLessonName(String lessonName) {\n        this.lessonName = lessonName;\n    }\n\n    @Override\n    public String toString() {\n        return &quot;Lesson{&quot; +\n                &quot;lessonName=&#039;&quot; + lessonName + &#039;\\&#039;&#039; +\n                &#039;}&#039;;\n    }\n}<\/code><\/pre>\n<p>2\u3001\u5728Student.java\u4e2d\u6dfb\u52a0\u4e00\u4e2aList<\/p>\n<pre><code>private List&lt;Lesson&gt; lessonList;<\/code><\/pre>\n<h5>2\u3001\u914d\u7f6e\u6587\u4ef6<\/h5>\n<p>1\u3001bean-diref.xml<\/p>\n<pre><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;beans xmlns=&quot;http:\/\/www.springframework.org\/schema\/beans&quot;\n       xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot;\n       xmlns:util=&quot;http:\/\/www.springframework.org\/schema\/util&quot;\n       xsi:schemaLocation=&quot;http:\/\/www.springframework.org\/schema\/util\n        http:\/\/www.springframework.org\/schema\/util\/spring-util.xsd\n        http:\/\/www.springframework.org\/schema\/beans\n        http:\/\/www.springframework.org\/schema\/beans\/spring-beans.xsd&quot;&gt;\n    &lt;bean id=&quot;teacher10&quot; class=&quot;com.atqt.spring.iocxm.dimap.Teacher&quot;&gt;\n        &lt;property name=&quot;tId&quot; value=&quot;001&quot;&gt;&lt;\/property&gt;\n        &lt;property name=&quot;tName&quot; value=&quot;\u5f20\u4e09\u8001\u5e08&quot;&gt;&lt;\/property&gt;\n    &lt;\/bean&gt;\n\n    &lt;bean id=&quot;teacher11&quot; class=&quot;com.atqt.spring.iocxm.dimap.Teacher&quot;&gt;\n        &lt;property name=&quot;tId&quot; value=&quot;002&quot;&gt;&lt;\/property&gt;\n        &lt;property name=&quot;tName&quot; value=&quot;\u674e\u56db&quot;&gt;&lt;\/property&gt;\n    &lt;\/bean&gt;\n\n    &lt;bean id=&quot;student&quot; class=&quot;com.atqt.spring.iocxm.dimap.Student&quot;&gt;\n        &lt;property name=&quot;sId&quot; value=&quot;\u5f20\u4e09&quot;&gt;&lt;\/property&gt;\n        &lt;property name=&quot;sName&quot; value=&quot;\u674e\u56db&quot;&gt;&lt;\/property&gt;\n&lt;!--   \u6ce8\u5165list\u3001map\u7c7b\u578b\u5c5e\u6027 --&gt;\n        &lt;property name=&quot;lessonList&quot; ref=&quot;lessonList&quot;&gt;&lt;\/property&gt;\n        &lt;property name=&quot;teacherMap&quot; ref=&quot;teacherMap&quot;&gt;&lt;\/property&gt;\n    &lt;\/bean&gt;\n&lt;!--    \u5199\u8fd9\u4e2a\u53d8\u91cf\u7684\u65f6\u5019\uff0c\u9700\u8981\u6ce8\u610fxmlns\u7684\u89c4\u8303--&gt;\n\n    &lt;util:list id=&quot;lessonList&quot;&gt;\n        &lt;ref bean=&quot;lesson1&quot;&gt;&lt;\/ref&gt;\n        &lt;ref bean=&quot;lesson2&quot;&gt;&lt;\/ref&gt;\n        &lt;ref bean=&quot;lesson3&quot;&gt;&lt;\/ref&gt;\n    &lt;\/util:list&gt;\n\n    &lt;util:map id=&quot;teacherMap&quot;&gt;\n        &lt;entry&gt;\n            &lt;key&gt;\n                &lt;value&gt;10000&lt;\/value&gt;\n            &lt;\/key&gt;\n            &lt;ref bean=&quot;teacher10&quot;&gt;&lt;\/ref&gt;\n        &lt;\/entry&gt;\n        &lt;entry&gt;\n            &lt;key&gt;\n                &lt;value&gt;10001&lt;\/value&gt;\n            &lt;\/key&gt;\n            &lt;ref bean=&quot;teacher11&quot;&gt;&lt;\/ref&gt;\n        &lt;\/entry&gt;\n    &lt;\/util:map&gt;\n\n    &lt;bean id=&quot;lesson1&quot; class=&quot;com.atqt.spring.iocxm.dimap.Lesson&quot;&gt;\n        &lt;property name=&quot;lessonName&quot; value=&quot;java\u5f00\u53d1&quot;&gt;&lt;\/property&gt;\n    &lt;\/bean&gt;\n\n    &lt;bean id=&quot;lesson2&quot; class=&quot;com.atqt.spring.iocxm.dimap.Lesson&quot;&gt;\n        &lt;property name=&quot;lessonName&quot; value=&quot;python\u5f00\u53d1&quot;&gt;&lt;\/property&gt;\n    &lt;\/bean&gt;\n\n    &lt;bean id=&quot;lesson3&quot; class=&quot;com.atqt.spring.iocxm.dimap.Lesson&quot;&gt;\n        &lt;property name=&quot;lessonName&quot; value=&quot;\u6d4b\u8bd5\u6d4b\u8bd5&quot;&gt;&lt;\/property&gt;\n    &lt;\/bean&gt;\n&lt;\/beans&gt;<\/code><\/pre>\n<h5>3\u3001\u6ce8\u610f<\/h5>\n<p>1\u3001\u8fd9\u4e2autil:map util:list \u90fd\u662f\u9700\u8981\u5bfc\u5165\uff0c\u547d\u540d\u7a7a\u95f4<\/p>\n<p>2\u3001\u4e0d\u7136\u4f1a\u51fa\u73b0\u62a5\u9519\u95ee\u9898<\/p>\n<h4>11\u3001p\u547d\u540d\u7a7a\u95f4<\/h4>\n<h5>1\u3001\u73af\u5883<\/h5>\n<p>1\u3001\u548c\u4ee5\u4e0a\u4e00\u6837<\/p>\n<p>2\u3001\u6ce8\u610f\uff1a\u9700\u8981\u5bfc\u5165\u5bf9\u5e94\u7684\u547d\u540d\u7a7a\u95f4\u683c\u5f0f<\/p>\n<pre><code>xmlns:p=&quot;http:\/\/www.springframework.org\/schema\/p&quot;<\/code><\/pre>\n<h5>2\u3001\u914d\u7f6e\u6587\u4ef6<\/h5>\n<pre><code>    &lt;bean id=&quot;studentp&quot; class=&quot;com.atqt.spring.iocxm.dimap.Student&quot;\n    p:sId=&quot;100&quot; p:teacherMap-ref=&quot;teacherMap&quot;  &gt;\n\n    &lt;\/bean&gt;<\/code><\/pre>\n<h4>12\u3001\u5b9e\u9a8c\u5341\uff1a\u5f15\u5165\u5916\u90e8\u5c5e\u6027\u6587\u4ef6\uff08\u4ee5jdbc\u914d\u7f6e\u6570\u636e\u5e93\u4e3a\u4f8b\uff09<\/h4>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/zyg.luchers.cn\/wp-content\/uploads\/2024\/04\/image-20231011173637600.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"http:\/\/zyg.luchers.cn\/wp-content\/uploads\/2024\/04\/image-20231011173637600.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20231011173637600\" \/><\/div><\/p>\n<h5>1\u3001\u4f5c\u7528<\/h5>\n<p>1\u3001\u4f7f\u7528\u573a\u666f\uff1ajdbc\u7684\u8fde\u63a5\uff0c\u9700\u8981\u5f15\u5165\u5916\u90e8\u7684.properties\u6587\u4ef6<\/p>\n<p>2\u3001\u521b\u5efa\u914d\u7f6e\u6587\u4ef6\uff0c\u5f15\u5165context\u547d\u540d\u7a7a\u95f4<\/p>\n<p>3\u3001\u5f15\u5165\u5c5e\u6027\u6587\u4ef6\uff0c\u4f7f\u7528\u8868\u8fbe\u5f0f\u5b8c\u6210\u6ce8\u5165<\/p>\n<p>4\u3001\u5982\u679c\u6709\u5185\u5bb9\u9700\u8981\u4fee\u6539\uff0c\u5c31\u4e0d\u7528\u4fee\u6539\u4e0a\u7ebf\u6240\u9700\u7684\u5185\u5bb9\uff0c<\/p>\n<h5>2\u3001\u52a0\u5165\u914d\u7f6e\u6587\u4ef6\u7684\u4f9d\u8d56<\/h5>\n<p>1\u3001pom.xml<\/p>\n<pre><code> &lt;!-- MySQL\u9a71\u52a8 --&gt;\n&lt;dependency&gt;\n    &lt;groupId&gt;mysql&lt;\/groupId&gt;\n    &lt;artifactId&gt;mysql-connector-java&lt;\/artifactId&gt;\n    &lt;version&gt;8.0.30&lt;\/version&gt;\n&lt;\/dependency&gt;\n\n&lt;!-- \u6570\u636e\u6e90 --&gt;\n&lt;dependency&gt;\n    &lt;groupId&gt;com.alibaba&lt;\/groupId&gt;\n    &lt;artifactId&gt;druid&lt;\/artifactId&gt;\n    &lt;version&gt;1.2.15&lt;\/version&gt;\n&lt;\/dependency&gt;<\/code><\/pre>\n<h5>3\u3001\u521b\u5efa\u5916\u90e8\u6587\u4ef6<\/h5>\n<p>1\u3001jdbc.properties<\/p>\n<pre><code>jdbc.user=root\njdbc.password=123456\njdbc.url=jdbc:mysql:\/\/localhost:3306\/spring?serverTimezone=UTC\njdbc.driver=com.mysql.cj.jdbc.Driver<\/code><\/pre>\n<h5>4\u3001\u5f15\u5165\u5c5e\u6027\u6587\u4ef6<\/h5>\n<p>1\u3001\u5f15\u5165context\u540d\u79f0\u7a7a\u95f4<\/p>\n<h4>13\u3001\u5b9e\u9a8c\u5341\u4e00\uff1abean\u7684\u4f5c\u7528\u57df<\/h4>\n<h5>1\u3001\u6982\u5ff5<\/h5>\n<p>1\u3001\u914d\u7f6ebean\u6807\u7b7e\u7684scope\u5c5e\u6027\u6765\u5236\u5b9abean\u7684\u4f5c\u7528\u57df\u8303\u56f4<\/p>\n<table>\n<thead>\n<tr>\n<th>\u53d6\u503c<\/th>\n<th>\u542b\u4e49<\/th>\n<th>\u521b\u5efa\u5bf9\u8c61\u7684\u65f6\u673a<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>singleton\uff08\u9ed8\u8ba4\uff09<\/td>\n<td>\u5728IOC\u5bb9\u5668\u4e2d\uff0c\u8fd9\u4e2abean\u7684\u5bf9\u8c61\u59cb\u7ec8\u4e3a\u5355\u5b9e\u4f8b<\/td>\n<td>IOC\u5bb9\u5668\u521d\u59cb\u5316\u65f6<\/td>\n<\/tr>\n<tr>\n<td>prototype<\/td>\n<td>\u8fd9\u4e2abean\u5728IOC\u5bb9\u5668\u4e2d\u6709\u591a\u4e2a\u5b9e\u4f8b<\/td>\n<td>\u83b7\u53d6bean\u65f6<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>2\u3001\u5982\u679c\u662f\u5728WebApplicationContext\u73af\u5883\u4e0b\u8fd8\u4f1a\u6709\u53e6\u5916\u51e0\u4e2a\u4f5c\u7528\u57df\uff08\u4f46\u4e0d\u5e38\u7528\uff09\uff1a<\/p>\n<table>\n<thead>\n<tr>\n<th>\u53d6\u503c<\/th>\n<th>\u542b\u4e49<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>request<\/td>\n<td>\u5728\u4e00\u4e2a\u8bf7\u6c42\u8303\u56f4\u5185\u6709\u6548<\/td>\n<\/tr>\n<tr>\n<td>session<\/td>\n<td>\u5728\u4e00\u4e2a\u4f1a\u8bdd\u8303\u56f4\u5185\u6709\u6548<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h5>2\u3001\u6f14\u793a\u4f8b\u5b50<\/h5>\n<p>1\u3001\u521b\u5efa\u4ee5\u7c7bUser<\/p>\n<pre><code>package com.atqt.spring.iocxm.score;\n\npublic class User {\n\n}<\/code><\/pre>\n<p>2\u3001\u521b\u5efa\u914d\u7f6e\u6587\u4ef6bean-scope.xml<\/p>\n<pre><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;beans xmlns=&quot;http:\/\/www.springframework.org\/schema\/beans&quot;\n       xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot;\n       xsi:schemaLocation=&quot;http:\/\/www.springframework.org\/schema\/beans http:\/\/www.springframework.org\/schema\/beans\/spring-beans.xsd&quot;&gt;\n        &lt;!--    \u591a\u5b9e\u4f8b\u7684\u4f8b\u5b50--&gt;\n        &lt;bean id=&quot;user&quot; class=&quot;com.atqt.spring.iocxm.score.User&quot; scope=&quot;prototype&quot;&gt;&lt;\/bean&gt;\n&lt;\/beans&gt;<\/code><\/pre>\n<p>3\u3001\u8fdb\u884c\u6d4b\u8bd5\u7c7b\u7684\u521b\u5efa\u548c\u8fd0\u884c<\/p>\n<pre><code>package com.atqt.spring.iocxm.score;\n\nimport org.junit.jupiter.api.Test;\nimport org.springframework.context.ApplicationContext;\nimport org.springframework.context.support.ClassPathXmlApplicationContext;\n\npublic class TestU {\n    @Test\n    public void demo1(){\n\/\/        \u591a\u5b9e\u4f8b\u6d4b\u8bd5\n        ApplicationContext context = new ClassPathXmlApplicationContext(&quot;bean-scope.xml&quot;);\n\/\/        \u5982\u679c\u662fscope=&quot;prototype&quot;\uff0c\u90a3\u5c31\u662f\u591a\u5b9e\u4f8b\uff0csingleton\uff08\u9ed8\u8ba4\uff09\u5c31\u662f\u5355\u5b9e\u4f8b\n        User user1 = context.getBean(User.class);\n        User user2 = context.getBean(User.class);\n\/\/        \u521b\u5efa\u4e862\u4e2a\u5bf9\u8c61\u5462\n        System.out.println(user1==user2);\n    }\n}<\/code><\/pre>\n<h4>14\u3001\u5b9e\u9a8c\u5341\u4e8c\uff1abean\u751f\u547d\u5468\u671f<\/h4>\n<h5>1\u3001\u5177\u4f53\u7684\u751f\u547d\u5468\u671f\u8fc7\u7a0b<\/h5>\n<p>1\u3001bean\u5bf9\u8c61\u7684\u521b\u5efa\uff08\u8c03\u7528\u65e0\u53c2\u6784\u9020\u5668\uff09<\/p>\n<p>2\u3001\u7ed9bean\u5bf9\u8c61\u8bbe\u7f6e\u5c5e\u6027\uff08\u5c5e\u6027\u6ce8\u5165\uff09<\/p>\n<p>3\u3001bean\u7684\u540e\u7f6e\u5904\u7406\u5668\uff08\u521d\u59cb\u5316\u4e4b\u524d0<\/p>\n<p>4\u3001bean\u5bf9\u8c61\u7684\u521d\u59cb\u5316<\/p>\n<p>5\u3001bean\u540e\u7f6e\u5904\u7406\u5668\uff08\u521d\u59cb\u5316\u4e4b\u540e\uff09<\/p>\n<p>6\u3001bean\u5bf9\u8c61\u521b\u5efa\u5b8c\u6210\u4e86\uff0c\u80fd\u591f\u4f7f\u7528<\/p>\n<p>7\u3001bean\u5bf9\u8c61\u9500\u6bc1\uff08\u914d\u7f6e\u6307\u5b9a\u7684\u9500\u6bc1\u65b9\u6cd5\uff09<\/p>\n<p>8\u3001IOC\u5bb9\u5668\u5173\u95ed\u4e86<\/p>\n<h5>2\u3001\u8865\u5145\u6807\u7b7e<\/h5>\n<p>1\u3001init-method\uff1a\u521d\u59cb\u5316\u6807\u7b7e<\/p>\n<p>2\u3001destroy-method\uff1a\u7ed3\u675f\u6807\u7b7e<\/p>\n<pre><code>#\u4f7f\u7528\u7ed3\u675f\u65b9\u6cd5\u5c31\u9700\u8981\u521b\u5efa\u5b9e\u4f8b\u5316\u5bf9\u8c61\u7684\u7c7bClassPathXmlApplicationContext\nClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(&quot;bean-life.xml&quot;);\ncontext.close();<\/code><\/pre>\n<h5>3\u3001\u540e\u7f6e\u5904\u7406\u5668<\/h5>\n<p>1\u3001\u521b\u5efa\u4e00\u4e2a\u7c7b\uff0c\u7c7b\u7ee7\u627fBeanPostProcessor<\/p>\n<p>2\u3001\u91cd\u5199\u63a5\u53e3\u4e2d\u7684\u4e24\u4e2a\u65b9\u6cd5<\/p>\n<p>3\u3001\u540e\u7f6e\u5904\u7406\u5668\uff0c\u521d\u59cb\u5316\u4e4b\u524d\u7684\u65b9\u6cd5<\/p>\n<pre><code>default Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {\n        return xxxxx;\n    }<\/code><\/pre>\n<p>5\u3001\u6ce8\u610f\uff1abean\u521b\u5efa\u63a5\u53e3\u7684\u540e\u7f6e\u5904\u7406\u5668\uff0c\u662f\u9488\u5bf9IOC\u5bb9\u5668\u4e2d\u7684\u6240\u6709bean\u90fd\u4f1a\u6267\u884c<\/p>\n<p>6\u3001\u540e\u7f6e\u5904\u7406\u5668\uff0c\u521d\u59cb\u5316\u4e4b\u540e\u7684\u65b9\u6cd5<\/p>\n<pre><code>@Nullable\n    default Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {\n        return xxxx;\n    }<\/code><\/pre>\n<p>7\u3001\u914d\u7f6e\u8bbe\u7f6e\u6587\u4ef6<\/p>\n<pre><code>#\u5c31\u662f\u548c\u4e3a\u5bf9\u8c61\u7c7b\u578b\u5c5e\u6027\u8d4b\u503c\u7684\u64cd\u4f5c\u4e00\u6837<\/code><\/pre>\n<h4>15\u3001\u5b9e\u9a8c\u5341\u4e09\uff1aFactoryBean<\/h4>\n<h5>1\u3001\u7b80\u4ecb<\/h5>\n<p>1\u3001\u662fspring\u63d0\u4f9b\u7684\u4e00\u79cd\u6574\u5408\u7684\u7b2c\u4e09\u65b9\u6846\u67b6\u7684\u5e38\u7528\u673a\u5236<\/p>\n<p>2\u3001\u83b7\u53d6bean\u7684\u65f6\u5019\u5f97\u5230\u7684\u4e0d\u662fclass\u5c5e\u6027\u4e2d\u914d\u7f6e\u7684\u8fd9\u4e2a\u7c7b\u7684\u5bf9\u8c61\uff0c\u800c\u662fgetObject()\u65b9\u6cd5\u7684\u8fd4\u56de\u503c<\/p>\n<p>3\u3001\u53ef\u4ee5\u628a\u7e41\u6742\u7684\u7ec6\u8282\u673a\u5236\u5c4f\u853d\u8d77\u6765<\/p>\n<p>4\u3001\u5c06\u6765\u6211\u4eec\u6574\u5408Mybatis\u65f6\uff0cSpring\u5c31\u662f\u901a\u8fc7FactoryBean\u673a\u5236\u6765\u5e2e\u6211\u4eec\u521b\u5efaSqSessionFactory\u5bf9\u8c61<\/p>\n<h5>2\u3001\u4f8b\u5b50<\/h5>\n<p>1\u3001\u7f16\u5199MyFactoryBean.java<\/p>\n<pre><code>package com.atqt.spring.iocxm.factorybean;\n\nimport com.atqt.spring.iocxm.score.User;\nimport org.springframework.beans.factory.FactoryBean;\n\npublic class MyFactoryBean implements FactoryBean {\n    @Override\n    public Object getObject() throws Exception {\n        return new User();\n    }\n\n    @Override\n    public Class&lt;?&gt; getObjectType() {\n        return null;\n    }\n}<\/code><\/pre>\n<p>2\u3001User.java<\/p>\n<pre><code>\u968f\u4fbf\u5b9a\u4e49\u4e00\u4e9b\u65b9\u6cd5<\/code><\/pre>\n<p>3\u3001\u914d\u7f6e\u6587\u4ef6\u8bbe\u7f6e<\/p>\n<pre><code>&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;beans xmlns=&quot;http:\/\/www.springframework.org\/schema\/beans&quot;\n       xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot;\n       xsi:schemaLocation=&quot;http:\/\/www.springframework.org\/schema\/beans http:\/\/www.springframework.org\/schema\/beans\/spring-beans.xsd&quot;&gt;\n    &lt;bean id=&quot;user&quot; class=&quot;com.atqt.spring.iocxm.factorybean.MyFactoryBean&quot;&gt;&lt;\/bean&gt;\n&lt;\/beans&gt;<\/code><\/pre>\n<h4>16\u3001\u5b9e\u9a8c\u5341\u56db\uff1a\u57fa\u4e8exml\u81ea\u52a8\u88c5\u914d<\/h4>\n<h5>1\u3001\u7406\u89e3<\/h5>\n<p>1\u3001\u81ea\u52a8\u88c5\u914d\uff1a\u6839\u636e\u6307\u5b9a\u7684\u7b56\u7565\uff0c\u5728IOC\u5bb9\u5668\u4e2d\u5339\u914d\u67d0\u4e00\u4e2abean\uff0c\u81ea\u52a8\u4e3a\u6307\u5b9a\u7684bean\u4e2d\u6240\u4f9d\u8d56\u7684\u7c7b\uff0c\u7c7b\u578b\u6216\u63a5\u53e3\u7c7b\u578b\u5c5e\u6027\u8d4b\u503c<\/p>\n<p><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/zyg.luchers.cn\/wp-content\/uploads\/2024\/04\/image-20231011234555917.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  decoding=\"async\" data-original=\"http:\/\/zyg.luchers.cn\/wp-content\/uploads\/2024\/04\/image-20231011234555917.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"image-20231011234555917\" \/><\/div><\/p>\n<h5>2\u3001\u914d\u7f6e\u7684\u4e24\u4e2a\u6982\u5ff5<\/h5>\n<p>1\u3001\u81ea\u52a8\u88c5\u914d\u65b9\u5f0f\uff1abyType<\/p>\n<p>\u2460\u6839\u636e\u7c7b\u578b\u5339\u914dIOC\u5bb9\u5668\u4e2d\u7684\u67d0\u4e2a\u517c\u5bb9\u7c7b\u578b\u7684bean\uff0c\u4e3a\u5c5e\u6027\u81ea\u52a8\u8d4b\u503c <\/p>\n<p>\u2461\u82e5\u5728IOC\u4e2d\uff0c\u6ca1\u6709\u4efb\u4f55\u4e00\u4e2a\u517c\u5bb9\u7c7b\u578b\u7684bean\u80fd\u591f\u4e3a\u5c5e\u6027\u503c\u8d4b\u503c\uff0c\u5219\u8be5\u5c5e\u6027\u4e0d\u88c5\u914d\uff0c\u56e0\u4e3a\u9ed8\u8ba4\u503c\u4e3anull<\/p>\n<p>\u2462\u82e5IOC\u4e2d\uff0c\u6709\u591a\u4e2a\u517c\u5bb9\u7c7b\u578b\u7684bean\u80fd\u591f\u4e3a\u5c5e\u6027\u8d4b\u503c\uff0c\u5219\u629b\u51fa\u5f02\u5e38NoUniqueBeanDefinitionException<\/p>\n<p>2\u3001\u81ea\u5b9a\u88c5\u914d\u65b9\u5f0f\uff1abyName<\/p>\n<p>\u2460\u5c06\u81ea\u52a8\u88c5\u914d\u7684\u5c5e\u6027\u7684\u5c5e\u6027\u540d\uff0c\u4f5c\u4e3abean\u7684id\u5728IONC\u5bb9\u5668\u4e2d\u5339\u914d\u76f8\u5bf9\u5e94\u7684bean\u8fdb\u884c\u8d4b\u503c<\/p>\n<h5>3\u3001\u4f8b\u5b50<\/h5>\n<p>1\u3001\u521b\u5efaUserController.java<\/p>\n<pre><code>package com.atqt.spring.iocxm.auto.controller;\n\nimport com.atqt.spring.iocxm.auto.service.UserService;\nimport com.atqt.spring.iocxm.auto.service.UserServiceImpl;\n\npublic class UserController {\n    private UserService userService;\n    public void addUser(){\n        System.out.println(&quot;controller\u65b9\u6cd5\u6267\u884c\u4e86&quot;);\n        UserService userService = new UserServiceImpl();\n        userService.addUserService();\n    }\n\n    public UserService getUserService() {\n        return userService;\n    }\n\n    public void setUserService(UserService userService) {\n        this.userService = userService;\n    }\n\n}<\/code><\/pre>\n<p>2\u3001\u521b\u5efaUserDao.java<\/p>\n<pre><code class=\"language-java\">package com.atqt.spring.iocxm.auto.dao;\n\npublic interface UserDao {\n    public void addUserDao();\n}<\/code><\/pre>\n<p>3\u3001\u521b\u5efaUserDaoImpl.java<\/p>\n<pre><code class=\"language-java\">package com.atqt.spring.iocxm.auto.dao;\n\npublic class UserDaoImpl implements UserDao{\n\n    @Override\n    public void addUserDao() {\n        System.out.println(&quot;UserDao\u65b9\u6cd5\u6267\u884c\u4e86&quot;);\n    }\n}<\/code><\/pre>\n<p>4\u3001\u521b\u5efaUserService.java<\/p>\n<pre><code class=\"language-java\">package com.atqt.spring.iocxm.auto.service;\n\npublic interface UserService {\n    public void addUserService();\n}<\/code><\/pre>\n<p>5\u3001\u521b\u5efaUserServiceImpl.java<\/p>\n<pre><code class=\"language-java\">package com.atqt.spring.iocxm.auto.service;\n\nimport com.atqt.spring.iocxm.auto.dao.UserDao;\nimport com.atqt.spring.iocxm.auto.dao.UserDaoImpl;\n\npublic class UserServiceImpl implements UserService {\n    private UserDao userDao;\n    @Override\n    public void addUserService() {\n        System.out.println(&quot;userServiceImpl\u65b9\u6cd5\u6267\u884c\u4e86&quot;);\n        UserDao userDao = new UserDaoImpl();\n        userDao.addUserDao();\n    }\n\n    public UserDao getUserDao() {\n        return userDao;\n    }\n\n    public void setUserDao(UserDao userDao) {\n        this.userDao = userDao;\n    }\n}<\/code><\/pre>\n<p>6\u3001\u914d\u7f6e\u6587\u4ef6bean-auto.xml<\/p>\n<pre><code class=\"language-java\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;beans xmlns=&quot;http:\/\/www.springframework.org\/schema\/beans&quot;\n       xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot;\n       xsi:schemaLocation=&quot;http:\/\/www.springframework.org\/schema\/beans http:\/\/www.springframework.org\/schema\/beans\/spring-beans.xsd&quot;&gt;\n    &lt;!--    &lt;bean id=&quot;userController&quot; class=&quot;com.atqt.spring.iocxm.auto.controller.UserController&quot;--&gt;\n    &lt;!--          autowire=&quot;byType&quot;&gt;--&gt;\n    &lt;!--&lt;!\u2013\u6839\u636e\u7c7b\u578b\u81ea\u52a8\u88c5\u914d\u2013&gt;--&gt;\n    &lt;!--    &lt;\/bean&gt;--&gt;\n    &lt;!--    &lt;bean id=&quot;userService&quot; class=&quot;com.atqt.spring.iocxm.auto.service.UserServiceImpl&quot;--&gt;\n    &lt;!--          autowire=&quot;byType&quot; &gt;--&gt;\n\n    &lt;!--    &lt;\/bean&gt;--&gt;\n    &lt;!--    &lt;bean id=&quot;UserDao&quot; class=&quot;com.atqt.spring.iocxm.auto.dao.UserDaoImpl&quot;&gt;--&gt;\n\n    &lt;!--    &lt;\/bean&gt;--&gt;\n\n    &lt;!--\u6839\u636e\u540d\u79f0\u81ea\u52a8\u88c5\u914d--&gt;\n    &lt;bean id=&quot;userController&quot; class=&quot;com.atqt.spring.iocxm.auto.controller.UserController&quot;\n          autowire=&quot;byName&quot;&gt;\n    &lt;\/bean&gt;\n    &lt;bean id=&quot;userService&quot; class=&quot;com.atqt.spring.iocxm.auto.service.UserServiceImpl&quot;\n          autowire=&quot;byName&quot;&gt;\n\n    &lt;\/bean&gt;\n    &lt;bean id=&quot;UserDao&quot; class=&quot;com.atqt.spring.iocxm.auto.dao.UserDaoImpl&quot;&gt;\n\n    &lt;\/bean&gt;\n\n&lt;\/beans&gt;<\/code><\/pre>\n<p>7\u3001\u8fdb\u884c\u6d4b\u8bd5TestUser.java<\/p>\n<pre><code class=\"language-java\">package com.atqt.spring.iocxm.auto.service;\n\nimport com.atqt.spring.iocxm.auto.controller.UserController;\nimport org.junit.jupiter.api.Test;\nimport org.springframework.context.ApplicationContext;\nimport org.springframework.context.support.ClassPathXmlApplicationContext;\n\npublic class TestUser {\n    @Test\n    public void demo01(){\n        ApplicationContext context = new ClassPathXmlApplicationContext(&quot;bean-auto.xml&quot;);\n        UserController userController = (UserController) context.getBean(&quot;userController&quot;);\n        userController.addUser();\n    }\n}<\/code><\/pre>\n<h3>5\u3001\u57fa\u4e8e\u6ce8\u89e3\u7ba1\u7406Bean<\/h3>\n<h4>1\u3001\u6982\u5ff5<\/h4>\n<p>1\u3001java5\u5f00\u59cb\u589e\u52a0\u6ce8\u89e3\u7684\u652f\u6301\uff0c\u662f<strong>\u4ee3\u7801\u7684\u7279\u6b8a\u6807\u8bb0<\/strong>\uff0c\u53ef\u4ee5\u5728\u7f16\u8bd1\u3001\u7c7b\u52a0\u8f7d\u548c\u8fd0\u884c\u65f6\u88ab\u8bfb\u53d6\uff0c\u6267\u884c\u54cd\u5e94\u7684\u5904\u7406\u3002<\/p>\n<p>2\u3001\u5f00\u53d1\u4eba\u5458\u53ef\u4ee5\u901a\u8fc7\u6ce8\u89e3\u5728\u4e0d\u6539\u53d8\u539f\u6709\u4ee3\u7801\u548c\u903b\u8f91\u7684\u60c5\u51b5\u4e0b\uff0c\u5728\u6e90\u4ee3\u7801\u4e2d\u5d4c\u5165\u5f00\u53d1\u8d44\u6e90<\/p>\n<p>3\u3001spring2.5\u5f00\u59cb\u652f\u6301\u6ce8\u89e3<\/p>\n<p>4\u3001\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u6ce8\u89e3\u5b9e\u73b0\u81ea\u52a8\u88c5\u914d\uff0c\u7b80\u5316Spring\u548cxml\u7684\u914d\u7f6e<\/p>\n<h4>2\u3001spring\u81ea\u52a8\u88c5\u914d\u6ce8\u89e3\u7684\u5b9e\u73b0\u6b65\u9aa4<\/h4>\n<p>1\u3001\u5f15\u5165\u4f9d\u8d56<\/p>\n<p>2\u3001\u5f00\u542f\u7ec4\u4ef6\u626b\u63cf<\/p>\n<p>3\u3001\u4f7f\u7528\u6ce8\u89e3\u5b9a\u4e49bean<\/p>\n<p>4\u3001\u4f9d\u8d56\u6ce8\u5165<\/p>\n<h4>3\u3001\u521b\u5efa\u6d4b\u8bd5\u6a21\u5757<\/h4>\n<p>1\u3001\u521b\u5efa\u4e00\u4e2a\u6a21\u5757\uff0c\u7136\u540e\u628a\u76f8\u5e94\u7684\u5305\u5bfc\u5165<\/p>\n<p>2\u3001\u628alog4j2.xml\u8bbe\u7f6e\u597d<\/p>\n<h4>4\u3001\u5f00\u542f\u626b\u63cf\u7ec4\u4ef6<\/h4>\n<p>1\u3001spring\u9ed8\u8ba4\u662f\u4e0d\u4f7f\u7528\u6ce8\u89e3\u88c5\u914dbean\u7684<\/p>\n<p>2\u3001\u6240\u4ee5\u6211\u4eec\u9700\u8981\u5728spring\u7684xml\u4e2d\u8fdb\u884c\u914d\u7f6e<\/p>\n<p>3\u3001\u7136\u540e\u901a\u8fc7context\uff1acomponent-scan\u5143\u7d20\uff0c\u5f00\u542fSpring Beans\u7684\u81ea\u52a8\u626b\u63cf\u529f\u80fd<\/p>\n<p>4\u3001\u5f00\u542f\u540e\u5c31\u4f1a\u81ea\u52a8\u7684\u626b\u63cf\u6307\u5b9a\u7684\u5305\uff0c\u4ee5\u53ca\u5305\u4e0b\u7684\u6240\u6709\u7c7b<\/p>\n<p>5\u3001<strong>\u5982\u679c\u6709\u4f7f\u7528@component\u6ce8\u89e3\uff0c\u5c31\u4f1a\u5c06\u8be5\u7c7b\u88c5\u5230\u6ce8\u89e3\u91cc\u9762\uff0c\u5c31\u76f8\u5f53\u4e8e\u662fIOC\u4e2d\u7684\u628a\u666e\u901apojo\u5b9e\u4f8b\u5316\u5230spring\u5bb9\u5668\u4e2d\uff0c\u76f8\u5f53\u4e8e\u914d\u7f6e\u6587\u4ef6\u4e2d\u7684\\<bean id=\"\" class=\"\"\/><\/strong><\/p>\n<p>6\u3001\u626b\u63cf\u7ec4\u4ef6\u914d\u7f6e<\/p>\n<pre><code class=\"language-xml\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;beans xmlns=&quot;http:\/\/www.springframework.org\/schema\/beans&quot;\n       xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot;\n       xmlns:context=&quot;http:\/\/www.springframework.org\/schema\/context&quot;\n       xsi:schemaLocation=&quot;http:\/\/www.springframework.org\/schema\/beans\n            http:\/\/www.springframework.org\/schema\/beans\/spring-beans-3.0.xsd\n            http:\/\/www.springframework.org\/schema\/context\n            http:\/\/www.springframework.org\/schema\/context\/spring-context.xsd&quot;&gt;\n        &lt;!--\u5f00\u542f\u7ec4\u4ef6\u626b\u63cf\u529f\u80fd--&gt;\n\n&lt;\/beans&gt;<\/code><\/pre>\n<h5>1\u3001\u60c5\u51b5\u4e00\uff1a\u6700\u57fa\u672c\u7684\u626b\u63cf\u65b9\u5f0f<\/h5>\n<pre><code class=\"language-xml\">        &lt;!--\u5f00\u542f\u7ec4\u4ef6\u626b\u63cf\u529f\u80fd--&gt;\n        &lt;context:component-scan base-package=&quot;com.atqt&quot;&gt;&lt;\/context:component-scan&gt;<\/code><\/pre>\n<h5>2\u3001\u60c5\u51b5\u4e8c\uff1a\u6307\u5b9a\u8981\u6392\u9664\u7684\u7ec4\u4ef6\uff08\u57fa\u672c\u4e86\u89e3\uff09<\/h5>\n<pre><code class=\"language-xml\">                &lt;!-- context:exclude-filter\u6807\u7b7e\uff1a\u6307\u5b9a\u6392\u9664\u89c4\u5219 --&gt;\n                &lt;!--\n                     type\uff1a\u8bbe\u7f6e\u6392\u9664\u6216\u5305\u542b\u7684\u4f9d\u636e\n                    type=&quot;annotation&quot;\uff0c\u6839\u636e\u6ce8\u89e3\u6392\u9664\uff0cexpression\u4e2d\u8bbe\u7f6e\u8981\u6392\u9664\u7684\u6ce8\u89e3\u7684\u5168\u7c7b\u540d\n                    type=&quot;assignable&quot;\uff0c\u6839\u636e\u7c7b\u578b\u6392\u9664\uff0cexpression\u4e2d\u8bbe\u7f6e\u8981\u6392\u9664\u7684\u7c7b\u578b\u7684\u5168\u7c7b\u540d\n                --&gt;\n                &lt;context:exclude-filter type=&quot;annotation&quot; expression=&quot;org.springframework.stereotype.Controller&quot;\/&gt;\n                &lt;!--&lt;context:exclude-filter type=&quot;assignable&quot; expression=&quot;com.atguigu.spring6.controller.UserController&quot;\/&gt;--&gt;\n        &lt;\/context:component-scan&gt;<\/code><\/pre>\n<h5>3\u3001\u60c5\u51b5\u4e09\uff1a\u4ec5\u626b\u63cf\u6307\u5b9a\u7ec4\u4ef6<\/h5>\n<pre><code class=\"language-xml\">&lt;context:component-scan base-package=&quot;com.atguigu&quot; use-default-filters=&quot;false&quot;&gt;\n    &lt;!-- context:include-filter\u6807\u7b7e\uff1a\u6307\u5b9a\u5728\u539f\u6709\u626b\u63cf\u89c4\u5219\u7684\u57fa\u7840\u4e0a\u8ffd\u52a0\u7684\u89c4\u5219 --&gt;\n    &lt;!-- use-default-filters\u5c5e\u6027\uff1a\u53d6\u503cfalse\u8868\u793a\u5173\u95ed\u9ed8\u8ba4\u626b\u63cf\u89c4\u5219 --&gt;\n    &lt;!-- \u6b64\u65f6\u5fc5\u987b\u8bbe\u7f6euse-default-filters=&quot;false&quot;\uff0c\u56e0\u4e3a\u9ed8\u8ba4\u89c4\u5219\u5373\u626b\u63cf\u6307\u5b9a\u5305\u4e0b\u6240\u6709\u7c7b --&gt;\n    &lt;!-- \n         type\uff1a\u8bbe\u7f6e\u6392\u9664\u6216\u5305\u542b\u7684\u4f9d\u636e\n        type=&quot;annotation&quot;\uff0c\u6839\u636e\u6ce8\u89e3\u6392\u9664\uff0cexpression\u4e2d\u8bbe\u7f6e\u8981\u6392\u9664\u7684\u6ce8\u89e3\u7684\u5168\u7c7b\u540d\n        type=&quot;assignable&quot;\uff0c\u6839\u636e\u7c7b\u578b\u6392\u9664\uff0cexpression\u4e2d\u8bbe\u7f6e\u8981\u6392\u9664\u7684\u7c7b\u578b\u7684\u5168\u7c7b\u540d\n    --&gt;\n    &lt;context:include-filter type=&quot;annotation&quot; expression=&quot;org.springframework.stereotype.Controller&quot;\/&gt;\n    &lt;!--&lt;context:include-filter type=&quot;assignable&quot; expression=&quot;com.atguigu.spring6.controller.UserController&quot;\/&gt;--&gt;\n&lt;\/context:component-scan&gt;<\/code><\/pre>\n<h4>5\u3001\u4f7f\u7528\u6ce8\u89e3\u5b9a\u4e49Bean<\/h4>\n<h5>1\u3001\u5185\u5bb9<\/h5>\n<p>1\u3001spring\u63d0\u4f9b\u4e86\u4ee5\u4e0b\u591a\u4e2a\u6ce8\u89e3\uff0c\u8fd9\u4e9b\u6ce8\u89e3\u53ef\u4ee5\u76f4\u63a5\u6807\u6ce8\u5728java\u7c7b\u4e0a\uff0c\u5c06\u4ed6\u4eec\u5b9a\u4e49\u6210Spring Bean<\/p>\n<p>2\u3001\u5185\u5bb9<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: center;\">\u6ce8\u89e3<\/th>\n<th>\u8bf4\u660e<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: center;\">@Component<\/td>\n<td>\u8be5\u6ce8\u89e3\u7528\u4e8e\u63cf\u8ff0 Spring \u4e2d\u7684 Bean\uff0c\u5b83\u662f\u4e00\u4e2a\u6cdb\u5316\u7684\u6982\u5ff5\uff0c\u4ec5\u4ec5\u8868\u793a\u5bb9\u5668\u4e2d\u7684\u4e00\u4e2a\u7ec4\u4ef6\uff08Bean\uff09\uff0c\u5e76\u4e14\u53ef\u4ee5\u4f5c\u7528\u5728\u5e94\u7528\u7684\u4efb\u4f55\u5c42\u6b21\uff0c\u4f8b\u5982 Service \u5c42\u3001Dao \u5c42\u7b49\u3002  \u4f7f\u7528\u65f6\u53ea\u9700\u5c06\u8be5\u6ce8\u89e3\u6807\u6ce8\u5728\u76f8\u5e94\u7c7b\u4e0a\u5373\u53ef\u3002<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">@Repository<\/td>\n<td>\u8be5\u6ce8\u89e3\u7528\u4e8e\u5c06\u6570\u636e\u8bbf\u95ee\u5c42\uff08Dao \u5c42\uff09\u7684\u7c7b\u6807\u8bc6\u4e3a Spring \u4e2d\u7684 Bean\uff0c\u5176\u529f\u80fd\u4e0e @Component \u76f8\u540c\u3002<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">@Service<\/td>\n<td>\u8be5\u6ce8\u89e3\u901a\u5e38\u4f5c\u7528\u5728\u4e1a\u52a1\u5c42\uff08Service \u5c42\uff09\uff0c\u7528\u4e8e\u5c06\u4e1a\u52a1\u5c42\u7684\u7c7b\u6807\u8bc6\u4e3a Spring \u4e2d\u7684 Bean\uff0c\u5176\u529f\u80fd\u4e0e @Component \u76f8\u540c\u3002<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\">@Controller<\/td>\n<td>\u8be5\u6ce8\u89e3\u901a\u5e38\u4f5c\u7528\u5728\u63a7\u5236\u5c42\uff08\u5982SpringMVC \u7684 Controller\uff09\uff0c\u7528\u4e8e\u5c06\u63a7\u5236\u5c42\u7684\u7c7b\u6807\u8bc6\u4e3a Spring \u4e2d\u7684 Bean\uff0c\u5176\u529f\u80fd\u4e0e @Component \u76f8\u540c\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h5>2\u3001\u57fa\u672c\u4f7f\u7528\u4f8b\u5b50<\/h5>\n<p>1\u3001\u521b\u5efa\u4e00\u4e2aUser.java<\/p>\n<pre><code class=\"language-java\">package com.atqt.spring6.bean;\n\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Component;\n\n@Component(value = &quot;user&quot;) \/\/== &lt;bean id=&quot;user&quot; class=&quot;xxx&quot;\npublic class User {\n}<\/code><\/pre>\n<p>2\u3001bean.xml<\/p>\n<pre><code class=\"language-xml\">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;\n&lt;beans xmlns=&quot;http:\/\/www.springframework.org\/schema\/beans&quot;\n       xmlns:xsi=&quot;http:\/\/www.w3.org\/2001\/XMLSchema-instance&quot;\n       xmlns:context=&quot;http:\/\/www.springframework.org\/schema\/context&quot;\n       xsi:schemaLocation=&quot;http:\/\/www.springframework.org\/schema\/beans\n            http:\/\/www.springframework.org\/schema\/beans\/spring-beans-3.0.xsd\n            http:\/\/www.springframework.org\/schema\/context\n            http:\/\/www.springframework.org\/schema\/context\/spring-context.xsd&quot;&gt;\n        &lt;!--\u5f00\u542f\u7ec4\u4ef6\u626b\u63cf\u529f\u80fd--&gt;\n        &lt;context:component-scan base-package=&quot;com.atqt.spring6&quot;&gt;\n                &lt;!-- context:exclude-filter\u6807\u7b7e\uff1a\u6307\u5b9a\u6392\u9664\u89c4\u5219 --&gt;\n                &lt;!--\n                     type\uff1a\u8bbe\u7f6e\u6392\u9664\u6216\u5305\u542b\u7684\u4f9d\u636e\n                    type=&quot;annotation&quot;\uff0c\u6839\u636e\u6ce8\u89e3\u6392\u9664\uff0cexpression\u4e2d\u8bbe\u7f6e\u8981\u6392\u9664\u7684\u6ce8\u89e3\u7684\u5168\u7c7b\u540d\n                    type=&quot;assignable&quot;\uff0c\u6839\u636e\u7c7b\u578b\u6392\u9664\uff0cexpression\u4e2d\u8bbe\u7f6e\u8981\u6392\u9664\u7684\u7c7b\u578b\u7684\u5168\u7c7b\u540d\n                --&gt;\n                &lt;context:exclude-filter type=&quot;annotation&quot; expression=&quot;org.springframework.stereotype.Controller&quot;\/&gt;\n                &lt;!--&lt;context:exclude-filter type=&quot;assignable&quot; expression=&quot;com.atguigu.spring6.controller.UserController&quot;\/&gt;--&gt;\n        &lt;\/context:component-scan&gt;\n\n&lt;!--        \u6392\u9664\u6307\u5b9a\u7684\u626b\u63cf\u7ec4\u4ef6--&gt;\n\n&lt;\/beans&gt;<\/code><\/pre>\n<h4>6\u3001\u5b9e\u9a8c\u4e00\uff1a@Autowired\u6ce8\u5165<\/h4>\n<h5>1\u3001\u5185\u5bb9<\/h5>\n<p>1\u3001\u5355\u72ec\u4f7f\u7528@Autowired\u6ce8\u5165\uff0c\u6839\u636e\u9ed8\u8ba4\u7c7b\u578b\u5339\u914d\u3010\u9ed8\u8ba4\u662fbyType\u3011<\/p>\n<p>2\u3001\u6e90\u7801<\/p>\n<pre><code class=\"language-java\">package org.springframework.beans.factory.annotation;\n\nimport java.lang.annotation.Documented;\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\/\/\u4f7f\u7528\u7684\u5730\u65b9\n@Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE})\n@Retention(RetentionPolicy.RUNTIME)\n@Documented\npublic @interface Autowired {\n    \/\/\u8981\u6c42\u8fd9\u4e2a\u503c\u5fc5\u987b\u5b58\u5728\n    boolean required() default true;\n}<\/code><\/pre>\n<p>3\u3001\u53ef\u4ee5\u5728\u6ce8\u5165\u7684\u5730\u65b9\u4e00<\/p>\n<pre><code>\u6784\u9020\u65b9\u6cd5\u4e0a\n\u65b9\u6cd5\u4e0a\n\u5f62\u53c2\u4e0a\n\u5c5e\u6027\u4e0a\n\u6ce8\u89e3\u4e0a<\/code><\/pre>\n<p>4\u3001\u53ef\u4ee5\u6ce8\u89e3\u7684\u5730\u65b9\u4e8c<\/p>\n<p>\u2460\u8be5\u6ce8\u89e3\u6709\u4e00\u4e2arequired\u5c5e\u6027\uff0c\u9ed8\u8ba4\u503c\u662ftrue\uff0c\u8868\u793a\u5728\u6ce8\u5165\u7684\u65f6\u5019\u8981\u6c42\u88ab\u6ce8\u5165\u7684Bean\u5fc5\u987b\u662f\u5b58\u5728\u7684<\/p>\n<p>\u2461\u5982\u679c\u4e0d\u5b58\u5728\u5219\u62a5\u9519\u3002\u5982\u679crequired\u5c5e\u6027\u8bbe\u7f6e\u4e3afalse\uff0c\u8868\u793a\u6ce8\u5165\u7684Bean\u5b58\u5728\u6216\u8005\u4e0d\u5b58\u5728\u90fd\u6ca1\u5173\u7cfb<\/p>\n<p>\u2462\u5b58\u5728\u7684\u8bdd\u5c31\u6ce8\u5165\uff0c\u4e0d\u5b58\u5728\u4e5f\u4e0d\u62a5\u9519<\/p>\n<h5>2\u3001\u573a\u666f\u4e00\uff1a\u5c5e\u6027\u6ce8\u5165<\/h5>\n<p>1\u3001\u5bf9\u6a21\u5757\u7684xml\u6587\u4ef6\u8fdb\u884c\u914d\u7f6e\u626b\u63cf<\/p>\n<p>2\u3001\u521b\u5efaUserDao.java<\/p>\n<pre><code class=\"language-java\">package com.atqt.spring6.bean.autowired.dao;\n\npublic interface UserDao {\n    public void add();\n}<\/code><\/pre>\n<p>3\u3001\u521b\u5efaUserDaoImpl.java<\/p>\n<pre><code class=\"language-java\">package com.atqt.spring6.bean.autowired.dao;\n\nimport org.springframework.stereotype.Repository;\n\n@Repository\npublic class UserDaoImpl implements UserDao{\n\n    @Override\n    public void add() {\n        System.out.println(&quot;UserDaoImpl\u6267\u884c\u4e86....&quot;);\n    }\n}<\/code><\/pre>\n<p>4\u3001UserService.java<\/p>\n<pre><code class=\"language-java\">package com.atqt.spring6.bean.autowired.service;\n\npublic interface UserService {\n    public void add();\n}<\/code><\/pre>\n<p>5\u3001UserServiceImpl.java<\/p>\n<pre><code class=\"language-java\">package com.atqt.spring6.bean.autowired.service;\n\nimport com.atqt.spring6.bean.autowired.dao.UserDao;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\n@Service\npublic class UserServiceImpl implements UserService{\n\/\/    \u6ce8\u5165dao\n\/\/    \u7b2c\u4e00\u79cd\u65b9\u5f0f \u5c5e\u6027\u6ce8\u5165\n    @Autowired\n    private UserDao userDao;\n\n    @Override\n    public void add() {\n        System.out.println(&quot;UserServiceImpl\u6267\u884c\u4e86\u3002\u3002\u3002\u3002&quot;);\n        userDao.add();\n    }\n}<\/code><\/pre>\n<p>6\u3001UserController.java<\/p>\n<pre><code class=\"language-java\">package com.atqt.spring6.bean.autowired.controller;\n\nimport com.atqt.spring6.bean.autowired.service.UserService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\n\n@Controller\npublic class UserController {\n\/\/    \u6ce8\u5165Service\n    \/\/\u65b9\u5f0f\u4e00\uff1a\u7b2c\u4e00\u79cd\u6ce8\u5165\u5c5e\u6027\u6ce8\u5165\n    @Autowired\/\/\u6839\u636e\u7c7b\u578b\u627e\u5230\u5bf9\u5e94\u7684\u5bf9\u8c61\n    private UserService userService;\n\n    public void add(){\n        System.out.println(&quot;UserController\u6267\u884c\u4e86\u3002\u3002\u3002\u3002&quot;);\n        userService.add();\n    }\n\n}<\/code><\/pre>\n<p>7\u3001\u6d4b\u8bd5\u4f7f\u7528\u6ce8\u89e3TestUser.java<\/p>\n<pre><code class=\"language-java\">package com.atqt.spring6.bean;\n\nimport org.springframework.context.ApplicationContext;\nimport org.springframework.context.support.ClassPathXmlApplicationContext;\n\npublic class TestUser {\n\n    public static void main(String[] args) {\n        ApplicationContext context = new ClassPathXmlApplicationContext(&quot;bean.xml&quot;);\n        User user = (User) context.getBean(User.class);\n        System.out.println(user);\n    }\n}<\/code><\/pre>\n<h5>3\u3001\u573a\u666f\u4e8c\uff1aset\u65b9\u6cd5\u6ce8\u5165<\/h5>\n<p>1\u3001\u57fa\u672c\u5185\u5bb9\u548c\u573a\u666f\u4e00\u7c7b\u4f3c<\/p>\n<p>2\u3001UserDao.java\u4e00\u6837<\/p>\n<p>3\u3001UserDaoImpl\u4e00\u6837<\/p>\n<p>4\u3001UserService.java\u4e00\u6837<\/p>\n<p>5\u3001UserServiceImpl.java<\/p>\n<pre><code class=\"language-java\">\/\/    \u7b2c\u4e8c\u79cd\u65b9\u5f0f\n    private UserDao userDao;\n\n    @Autowired\n    public void setUserDao(UserDao userDao) {\n        this.userDao = userDao;\n    }<\/code><\/pre>\n<p>6\u3001UserController.java<\/p>\n<pre><code class=\"language-java\">package com.atqt.spring6.bean.autowired.controller;\n\nimport com.atqt.spring6.bean.autowired.service.UserService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\n\n@Controller\npublic class UserController {\n\/\/    \u6ce8\u5165Service\n\/\/    \/\/\u65b9\u5f0f\u4e00\uff1a\u7b2c\u4e00\u79cd\u6ce8\u5165\u5c5e\u6027\u6ce8\u5165\n\/\/    @Autowired\/\/\u6839\u636e\u7c7b\u578b\u627e\u5230\u5bf9\u5e94\u7684\u5bf9\u8c61\n\/\/private UserService userService;\n\/\/    \u65b9\u5f0f\u4e8c\uff1aset\u6ce8\u5165\n\n    private UserService userService;\n    @Autowired\n    public void setUserService(UserService userService) {\n        this.userService = userService;\n    }\n\n    public void add(){\n        System.out.println(&quot;UserController\u6267\u884c\u4e86\u3002\u3002\u3002\u3002&quot;);\n        userService.add();\n    }\n\n}<\/code><\/pre>\n<p>7\u3001\u6d4b\u8bd5\u4f7f\u7528\u6ce8\u89e3TestUser.java<\/p>\n<pre><code class=\"language-java\">package com.atqt.spring6.bean;\n\nimport org.springframework.context.ApplicationContext;\nimport org.springframework.context.support.ClassPathXmlApplicationContext;\n\npublic class TestUser {\n\n    public static void main(String[] args) {\n        ApplicationContext context = new ClassPathXmlApplicationContext(&quot;bean.xml&quot;);\n        User user = (User) context.getBean(User.class);\n        System.out.println(user);\n    }\n}<\/code><\/pre>\n<h5>4\u3001\u573a\u666f\u4e09\uff1a\u6784\u9020\u65b9\u6cd5\u6ce8\u5165<\/h5>\n<p>1\u3001<\/p>\n<p>1\u3001\u57fa\u672c\u5185\u5bb9\u548c\u573a\u666f\u4e00\u7c7b\u4f3c<\/p>\n<p>2\u3001UserDao.java\u4e00\u6837<\/p>\n<p>3\u3001UserDaoImpl\u4e00\u6837<\/p>\n<p>4\u3001UserService.java\u4e00\u6837<\/p>\n<p>5\u3001UserServiceImpl.java<\/p>\n<pre><code class=\"language-java\">package com.atqt.spring6.bean.autowired.service;\n\nimport com.atqt.spring6.bean.autowired.dao.UserDao;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\n@Service\npublic class UserServiceImpl implements UserService{\n\/\/    \u6ce8\u5165dao\n\/\/    \u7b2c\u4e00\u79cd\u65b9\u5f0f \u5c5e\u6027\u6ce8\u5165\n\/\/    @Autowired\n\/\/    private UserDao userDao;\n\/\/\n\/\/    @Override\n\n\/\/    \u7b2c\u4e8c\u79cd\u65b9\u5f0f\n\/\/    private UserDao userDao;\n\/\/\n\/\/    @Autowired\n\/\/    public void setUserDao(UserDao userDao) {\n\/\/        this.userDao = userDao;\n\/\/    }\n\n\/\/    \u7b2c\u4e09\u79cd\u65b9\u6cd5\n    private UserDao userDao;\n    @Autowired\n\n    public UserServiceImpl(UserDao userDao) {\n        this.userDao = userDao;\n    }\n\n    public void add() {\n        System.out.println(&quot;UserServiceImpl\u6267\u884c\u4e86\u3002\u3002\u3002\u3002&quot;);\n        userDao.add();\n    }\n}<\/code><\/pre>\n<p>6\u3001UserController.java<\/p>\n<pre><code class=\"language-java\">package com.atqt.spring6.bean.autowired.controller;\n\nimport com.atqt.spring6.bean.autowired.service.UserService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\n\n@Controller\npublic class UserController {\n\/\/    \u6ce8\u5165Service\n\/\/    \/\/\u65b9\u5f0f\u4e00\uff1a\u7b2c\u4e00\u79cd\u6ce8\u5165\u5c5e\u6027\u6ce8\u5165\n\/\/    @Autowired\/\/\u6839\u636e\u7c7b\u578b\u627e\u5230\u5bf9\u5e94\u7684\u5bf9\u8c61\n\/\/private UserService userService;\n\/\/    \u65b9\u5f0f\u4e8c\uff1aset\u6ce8\u5165\n\n\/\/    private UserService userService;\n\/\/    @Autowired\n\/\/    public void setUserService(UserService userService) {\n\/\/        this.userService = userService;\n\/\/    }\n\n\/\/    \u7b2c\u4e09\u79cd\u65b9\u6cd5\uff1a\u6784\u9020\u5668\u6ce8\u5165\n    private UserService userService;\n\n    @Autowired\n    public UserController(UserService userService) {\n        this.userService = userService;\n    }\n\n    public void add(){\n        System.out.println(&quot;UserController\u6267\u884c\u4e86\u3002\u3002\u3002\u3002&quot;);\n        userService.add();\n    }\n\n}<\/code><\/pre>\n<p>7\u3001\u6d4b\u8bd5\u4f7f\u7528\u6ce8\u89e3TestUser.java<\/p>\n<pre><code class=\"language-java\">package com.atqt.spring6.bean.autowired;\n\nimport com.atqt.spring6.bean.autowired.controller.UserController;\nimport org.springframework.context.ApplicationContext;\nimport org.springframework.context.support.ClassPathXmlApplicationContext;\n\npublic class TestUser {\n    public static void main(String[] args) {\n        ApplicationContext context = new ClassPathXmlApplicationContext(&quot;bean.xml&quot;);\n        UserController  userController =  context.getBean(UserController.class);\n        userController.add();\n\n    }\n\n}<\/code><\/pre>\n<h5>5\u3001\u573a\u666f\u56db\uff1a\u6784\u9020\u65b9\u6cd5\u6ce8\u5165<\/h5>\n<p>1\u3001\u57fa\u672c\u5185\u5bb9\u548c\u573a\u666f\u4e00\u7c7b\u4f3c<\/p>\n<p>2\u3001UserDao.java\u4e00\u6837<\/p>\n<p>3\u3001UserDaoImpl\u4e00\u6837<\/p>\n<p>4\u3001UserService.java\u4e00\u6837<\/p>\n<p>5\u3001UserServiceImpl.java<\/p>\n<pre><code class=\"language-java\">package com.atqt.spring6.bean.autowired.service;\n\nimport com.atqt.spring6.bean.autowired.dao.UserDao;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\n@Service\npublic class UserServiceImpl implements UserService{\n\/\/    \u6ce8\u5165dao\n\/\/    \u7b2c\u4e00\u79cd\u65b9\u5f0f \u5c5e\u6027\u6ce8\u5165\n\/\/    @Autowired\n\/\/    private UserDao userDao;\n\/\/\n\/\/    @Override\n\n\/\/    \u7b2c\u4e8c\u79cd\u65b9\u5f0f\n\/\/    private UserDao userDao;\n\/\/\n\/\/    @Autowired\n\/\/    public void setUserDao(UserDao userDao) {\n\/\/        this.userDao = userDao;\n\/\/    }\n\n\/\/\/\/    \u7b2c\u4e09\u79cd\u65b9\u6cd5\n\/\/    private UserDao userDao;\n\/\/    @Autowired\n\/\/\n\/\/    public UserServiceImpl(UserDao userDao) {\n\/\/        this.userDao = userDao;\n\/\/    }\n\n\/\/    \u7b2c\u56db\u79cd\u65b9\u5f0f\uff1a\u5f62\u53c2\u6ce8\u5165\n    private UserDao userDao;\n\n    public UserServiceImpl(@Autowired UserDao userDao) {\n        this.userDao = userDao;\n    }\n\n    public void add() {\n        System.out.println(&quot;UserServiceImpl\u6267\u884c\u4e86\u3002\u3002\u3002\u3002&quot;);\n        userDao.add();\n    }\n}<\/code><\/pre>\n<p>6\u3001UserController.java<\/p>\n<pre><code class=\"language-java\">package com.atqt.spring6.bean.autowired.controller;\n\nimport com.atqt.spring6.bean.autowired.service.UserService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Controller;\n\n@Controller\npublic class UserController {\n\/\/    \u6ce8\u5165Service\n\/\/    \/\/\u65b9\u5f0f\u4e00\uff1a\u7b2c\u4e00\u79cd\u6ce8\u5165\u5c5e\u6027\u6ce8\u5165\n\/\/    @Autowired\/\/\u6839\u636e\u7c7b\u578b\u627e\u5230\u5bf9\u5e94\u7684\u5bf9\u8c61\n\/\/private UserService userService;\n\/\/    \u65b9\u5f0f\u4e8c\uff1aset\u6ce8\u5165\n\n\/\/    private UserService userService;\n\/\/    @Autowired\n\/\/    public void setUserService(UserService userService) {\n\/\/        this.userService = userService;\n\/\/    }\n\n\/\/\/\/    \u7b2c\u4e09\u79cd\u65b9\u6cd5\uff1a\u6784\u9020\u5668\u6ce8\u5165\n\/\/    private UserService userService;\n\/\/\n\/\/    @Autowired\n\/\/    public UserController(UserService userService) {\n\/\/        this.userService = userService;\n\/\/    }\n\n\/\/    \u7b2c\u56db\u79cd\u65b9\u5f0f\uff1a\u5f62\u53c2\u6ce8\u5165\n    private UserService userService;\n\n    public UserController(@Autowired UserService userService) {\n        this.userService = userService;\n    }\n\n    public void add(){\n        System.out.println(&quot;UserController\u6267\u884c\u4e86\u3002\u3002\u3002\u3002&quot;);\n        userService.add();\n    }\n\n}<\/code><\/pre>\n<p>7\u3001\u6d4b\u8bd5\u4f7f\u7528\u6ce8\u89e3TestUser.java<\/p>\n<pre><code class=\"language-java\">package com.atqt.spring6.bean.autowired;\n\nimport com.atqt.spring6.bean.autowired.controller.UserController;\nimport org.springframework.context.ApplicationContext;\nimport org.springframework.context.support.ClassPathXmlApplicationContext;\n\npublic class TestUser {\n    public static void main(String[] args) {\n        ApplicationContext context = new ClassPathXmlApplicationContext(&quot;bean.xml&quot;);\n        UserController  userController =  context.getBean(UserController.class);\n        userController.add();\n\n    }\n\n}<\/code><\/pre>\n<h5>6\u3001\u573a\u666f\u4e94\uff1a\u53ea\u6709\u4e00\u4e2a\u6709\u53c2\u6784\u9020\u51fd\u6570\uff0c\u53ef\u4ee5\u4e0d\u6ce8\u91ca\uff01<\/h5>\n<p>1\u3001\u6ce8\u610f\uff1a\u6709\u4e14\u53ea\u6709\u4e00\u4e2a\u6709\u53c2\u6784\u9020\u51fd\u6570\uff0c\u624d\u53ef\u4ee5\u4e0d\u6ce8\u91ca<\/p>\n<h5>7\u3001\u573a\u666f\u516d\uff1a@Autowired\u548c@Qualifier\u6ce8\u89e3\u8054\u5408<\/h5>\n<p>1\u3001UserDao\u4e00\u6837UserService\u4e00\u6837<\/p>\n<p>2\u3001\u6dfb\u52a0\u4e00\u4e2aUserRedisDaoImpl.java<\/p>\n<pre><code class=\"language-java\">package com.atqt.spring6.bean.autowired.dao;\n\nimport org.springframework.stereotype.Repository;\n\n@Repository\npublic class UserRedisDaoImpl implements UserDao{\n    @Override\n    public void add() {\n        System.out.println(&quot;UserRedisDaoImpl\u8fd0\u884c\u4e86....&quot;);\n    }\n}<\/code><\/pre>\n<p>3\u3001\u4fee\u6539UserServiceImpl.java<\/p>\n<pre><code class=\"language-java\">package com.atqt.spring6.bean.autowired.service;\n\nimport com.atqt.spring6.bean.autowired.dao.UserDao;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.factory.annotation.Qualifier;\nimport org.springframework.stereotype.Service;\n\n@Service\npublic class UserServiceImpl implements UserService{\n\n\/\/    \u7b2c\u4e94\u79cd\u65b9\u6cd5\uff1a\u6839\u636e\u4e24\u4e2a\u6ce8\u89e3\u8fdb\u884c\u6ce8\u5165\n    @Autowired\n    @Qualifier(value = &quot;userRedisDaoImpl&quot;)\n    private UserDao userDao;\n\n    public void add() {\n        System.out.println(&quot;UserServiceImpl\u6267\u884c\u4e86\u3002\u3002\u3002\u3002&quot;);\n        userDao.add();\n    }\n}<\/code><\/pre>\n<p>4\u3001\u6ce8\u610f\u8981\u5199\u6ce8\u89e3<\/p>\n<h4>7\u3001\u5b9e\u9a8c\u4e8c\uff1a@Resource\u6ce8\u5165<\/h4>\n<h5>1\u3001@Resource\u548c @Autowired\u6bd4\u8f83<\/h5>\n<p>1\u3001@Resource\u6ce8\u89e3\u53ef\u4ee5\u5b8c\u6210\u5c5e\u6027\u6ce8\u5165<\/p>\n<p>2\u3001@Resource\u6ce8\u89e3\u662fJDK\u6269\u5c55\u5305\u4e2d\u7684\uff0c\u662fjdk\u7684\u4e00\u90e8\u5206\uff0c\u662f\u6807\u51c6\u6ce8\u89e3\uff0c\u66f4\u6709\u901a\u7528\u6027<\/p>\n<p>3\u3001Autowired\u6ce8\u89e3\u662fSpring\u7684<\/p>\n<p>4\u3001@Resource\u9ed8\u8ba4\u662f\u6839\u636e\u540d\u79f0\u88c5\u914dbyName\uff0c\u672a\u6307\u5b9aname\u65f6\uff0c\u4f7f\u7528\u5c5e\u6027\u540d\u79f0\u4f5c\u4e3aname<\/p>\n<p>5\u3001\u5982\u679c\u627e\u4e0d\u5230name\uff0c\u5c31\u4f1a\u81ea\u52a8\u542f\u52a8\u901a\u8fc7\u7c7b\u578bbyType\u88c5\u914d\u3002<\/p>\n<p>6\u3001@Autowired\u6ce8\u89e3\u9ed8\u8ba4\u662f\u6839\u636e\u7c7b\u578b\u88c5\u914d\uff0c\u5982\u679c\u60f3\u6839\u636e\u540d\u79f0\u88c5\u914d\uff0c\u9700\u8981\u914d\u5408@Qualifier\u6ce8\u89e3\u4e00\u8d77\u7528<\/p>\n<p>7\u3001@Resource\u6ce8\u89e3\u7528\u5728\u5c5e\u6027\u4e0a\u3001setter\u65b9\u6cd5\u4e0a<\/p>\n<p>8\u3001@Autowired\u6ce8\u89e3\uff0c\u7528\u5728\u5c5e\u6027\u4e0a\u3001setter\u65b9\u6cd5\u4e0a\u3001\u6784\u9020\u65b9\u6cd5\u4e0a\u3001\u6784\u9020\u65b9\u6cd5\u53c2\u6570\u4e0a<\/p>\n<p><strong>9\u3001@Resource\u6ce8\u89e3\u5c5e\u4e8ejdk\u6269\u5c55\u5305\uff0c\u6240\u4ee5\u4e0d\u505ajdk\u5f53\u4e2d\uff0c\u9700\u8981\u5f15\u5165\u989d\u5916\u7684\u5305\u3010jdk8\u4e0d\u8981\uff0cjdk\u9ad8\u4e8e11\u6216\u8005\u4f4e\u4e8ejdk8\u9700\u8981\u5f15\u5165\u3011<\/strong><\/p>\n<p>10\u3001\u4f9d\u8d56<\/p>\n<pre><code class=\"language-xml\">&lt;dependency&gt;\n    &lt;groupId&gt;jakarta.annotation&lt;\/groupId&gt;\n    &lt;artifactId&gt;jakarta.annotation-api&lt;\/artifactId&gt;\n    &lt;version&gt;2.1.1&lt;\/version&gt;\n&lt;\/dependency&gt;<\/code><\/pre>\n<h5>2\u3001\u573a\u666f\u4e00\uff1a\u6839\u636ename\u6ce8\u5165<\/h5>\n<p>1\u3001UserDaoImp.java<\/p>\n<pre><code class=\"language-java\">package com.atqt.spring6.bean.resource.dao;\n\nimport org.springframework.stereotype.Repository;\n\n@Repository(&quot;myUserDao&quot;)\npublic class UserDaoImpl implements UserDao {\n\n    @Override\n    public void add() {\n        System.out.println(&quot;UserDaoImpl\u6267\u884c\u4e86....&quot;);\n    }\n}<\/code><\/pre>\n<p>2\u3001UserRedisDaoImpl.java<\/p>\n<pre><code class=\"language-java\">package com.atqt.spring6.bean.resource.dao;\n\nimport org.springframework.stereotype.Repository;\n\n@Repository(&quot;myUserRedisDao&quot;)\npublic class UserRedisDaoImpl implements UserDao {\n    @Override\n    public void add() {\n        System.out.println(&quot;UserRedisDaoImpl\u8fd0\u884c\u4e86....&quot;);\n    }\n}<\/code><\/pre>\n<p>3\u3001UserServiceImpl.java<\/p>\n<pre><code class=\"language-java\">package com.atqt.spring6.bean.resource.service;\n\nimport com.atqt.spring6.bean.resource.dao.UserDao;\nimport jakarta.annotation.Resource;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.beans.factory.annotation.Qualifier;\nimport org.springframework.stereotype.Repository;\nimport org.springframework.stereotype.Service;\n\n@Service(value = &quot;myUserService&quot;)\npublic class UserServiceImpl implements UserService {\n\n    @Resource(name = &quot;myUserDao&quot;)\n    private UserDao myUserDao;\n\n    public void add() {\n        System.out.println(&quot;UserServiceImpl\u6267\u884c\u4e86\u3002\u3002\u3002\u3002&quot;);\n        myUserDao.add();\n    }\n}<\/code><\/pre>\n<p>4\u3001TestUser.java<\/p>\n<pre><code class=\"language-java\">package com.atqt.spring6.bean.resource;\n\nimport com.atqt.spring6.bean.resource.controller.UserController;\nimport org.springframework.context.ApplicationContext;\nimport org.springframework.context.support.ClassPathXmlApplicationContext;\n\npublic class TestUser {\n    public static void main(String[] args) {\n        ApplicationContext context = new ClassPathXmlApplicationContext(&quot;bean.xml&quot;);\n        UserController userController =  context.getBean(UserController.class);\n        userController.add();\n    }\n}<\/code><\/pre>\n<h5>3\u3001\u6d4b\u8bd5\u5f02\u5e38<\/h5>\n<p>1\u3001\u6839\u636e\u5f02\u5e38\u4fe1\u606f\u5f97\u77e5\uff1a\u663e\u7136\u5f53\u901a\u8fc7name\u627e\u4e0d\u5230\u7684\u65f6\u5019\uff0c\u81ea\u7136\u4f1a\u542f\u52a8byType\u8fdb\u884c\u6ce8\u5165\uff0c\u4ee5\u4e0a\u7684\u9519\u8bef\u662f\u56e0\u4e3aUserDao\u63a5\u53e3\u4e0b\u6709\u4e24\u4e2a\u5b9e\u73b0\u7c7b\u5bfc\u81f4\u7684\u3002\u6240\u4ee5\u6839\u636e\u7c7b\u578b\u6ce8\u5165\u5c31\u4f1a\u62a5\u9519\u3002<\/p>\n<p>2\u3001@Resource\u7684set\u6ce8\u5165\u53ef\u4ee5\u81ea\u884c\u6d4b\u8bd5<\/p>\n<h5>4\u3001\u603b\u7ed3<\/h5>\n<p>1\u3001@Resource\u6ce8\u89e3\uff1a\u9ed8\u8ba4byName\u6ce8\u5165\uff0c\u6ca1\u6709\u6307\u5b9aname\u65f6\u628a\u5c5e\u6027\u540d\u5f53\u505aname\uff0c\u6839\u636ename\u627e\u4e0d\u5230\u65f6\uff0c\u624d\u4f1abyType\u6ce8\u5165\u3002byType\u6ce8\u5165\u65f6\uff0c\u67d0\u79cd\u7c7b\u578b\u7684Bean\u53ea\u80fd\u6709\u4e00\u4e2a<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u7b2c\u4e09\u7ae0\u3001\u5bb9\u5668\uff1aIoC 1\u3001\u662f\u4ec0\u4e48 1\u3001\u662fInversion of Control\u7684\u7b80\u5199\uff0c\u8bd1\u4e3a\u201c\u63a7\u5236\u53cd\u8f6c\u201d\uff0c\u662f\u4e00 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-5785","post","type-post","status-publish","format-standard","hentry","category-spring-spring"],"_links":{"self":[{"href":"http:\/\/zyg.luchers.cn\/index.php\/wp-json\/wp\/v2\/posts\/5785","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/zyg.luchers.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/zyg.luchers.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/zyg.luchers.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/zyg.luchers.cn\/index.php\/wp-json\/wp\/v2\/comments?post=5785"}],"version-history":[{"count":1,"href":"http:\/\/zyg.luchers.cn\/index.php\/wp-json\/wp\/v2\/posts\/5785\/revisions"}],"predecessor-version":[{"id":5786,"href":"http:\/\/zyg.luchers.cn\/index.php\/wp-json\/wp\/v2\/posts\/5785\/revisions\/5786"}],"wp:attachment":[{"href":"http:\/\/zyg.luchers.cn\/index.php\/wp-json\/wp\/v2\/media?parent=5785"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/zyg.luchers.cn\/index.php\/wp-json\/wp\/v2\/categories?post=5785"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/zyg.luchers.cn\/index.php\/wp-json\/wp\/v2\/tags?post=5785"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}