<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>SpringBoot on Jizuiba`s Blog</title><link>https://jizuiba.netlify.app/tags/springboot/</link><description>Recent content in SpringBoot on Jizuiba`s Blog</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Thu, 10 Jul 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://jizuiba.netlify.app/tags/springboot/index.xml" rel="self" type="application/rss+xml"/><item><title>Bean生命周期管理错误案例</title><link>https://jizuiba.netlify.app/posts/bean%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E7%AE%A1%E7%90%86%E9%94%99%E8%AF%AF%E6%A1%88%E4%BE%8B/</link><pubDate>Thu, 10 Jul 2025 00:00:00 +0000</pubDate><guid>https://jizuiba.netlify.app/posts/bean%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E7%AE%A1%E7%90%86%E9%94%99%E8%AF%AF%E6%A1%88%E4%BE%8B/</guid><description>&lt;h2 id="一错误案例"&gt;一、错误案例&lt;/h2&gt;
&lt;figure class="article-codeblock article-codeblock--java" data-code-language="java" style="--code-max-height: 32rem;"&gt;&lt;figcaption class="article-codeblock__header" aria-label="Code block tools"&gt;&lt;button
 type="button"
 class="article-codeblock__copy"
 data-copy-default="复制"
 data-copy-success="已复制"
 data-copy-error="失败"
 aria-label="复制"&gt;
 &lt;svg class="article-codeblock__copy-icon" width="14" height="14" viewBox="0 0 24 24" aria-hidden="true"&gt;
 &lt;rect x="9" y="9" width="13" height="13" rx="2" ry="2"&gt;&lt;/rect&gt;
 &lt;path d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"&gt;&lt;/path&gt;
 &lt;/svg&gt;
 &lt;span class="article-codeblock__copy-text"&gt;复制&lt;/span&gt;
 &lt;/button&gt;&lt;span class="article-codeblock__language" aria-label="Code language"&gt;java&lt;/span&gt;&lt;/figcaption&gt;&lt;div class="article-codeblock__body"&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-java" data-lang="java"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nd"&gt;@Service&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nd"&gt;@Slf4j&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;public&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MyService&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="nd"&gt;@Value&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;${resend.to}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="kd"&gt;private&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;String&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="kd"&gt;public&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;MyService&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;		&lt;/span&gt;&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;info&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;to =&amp;gt; {}&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="na"&gt;to&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// 此时的to为null&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;	&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
 &lt;/figure&gt;&lt;p&gt;Spring 调用构造函数（此时&lt;code&gt;to&lt;/code&gt;还未注入，字段是&lt;code&gt;null&lt;/code&gt;）。&lt;/p&gt;</description></item><item><title>多数据源Druid实现</title><link>https://jizuiba.netlify.app/posts/%E5%A4%9A%E6%95%B0%E6%8D%AE%E6%BA%90druid%E5%AE%9E%E7%8E%B0/</link><pubDate>Thu, 03 Apr 2025 00:00:00 +0000</pubDate><guid>https://jizuiba.netlify.app/posts/%E5%A4%9A%E6%95%B0%E6%8D%AE%E6%BA%90druid%E5%AE%9E%E7%8E%B0/</guid><description>&lt;h2 id="1-引入-druid-后是否需要自己维护连接池"&gt;&lt;strong&gt;1. 引入 Druid 后是否需要自己维护连接池？&lt;/strong&gt;&lt;/h2&gt;
&lt;h3 id="11-druid-的作用"&gt;&lt;strong&gt;1.1 Druid 的作用&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Druid&lt;/code&gt; 是一个高性能的数据库连接池组件，它负责管理数据库连接的生命周期。&lt;/li&gt;
&lt;li&gt;一旦配置好 &lt;code&gt;Druid&lt;/code&gt; 数据源，所有的连接获取和释放都会由 &lt;code&gt;Druid&lt;/code&gt; 自动处理。&lt;/li&gt;
&lt;li&gt;只需要在配置文件中定义数据源的相关参数（如最大连接数、最小空闲连接数等），&lt;code&gt;Druid&lt;/code&gt; 会根据这些参数动态管理连接池。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="12-不需要手动维护连接池"&gt;&lt;strong&gt;1.2 不需要手动维护连接池&lt;/strong&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;在使用 &lt;code&gt;JdbcTemplate&lt;/code&gt; 或其他数据库操作工具时，&lt;code&gt;Druid&lt;/code&gt; 会自动从连接池中获取连接，并在操作完成后将连接返回到池中。&lt;/li&gt;
&lt;li&gt;因此，不需要手动创建或关闭数据库连接，所有这些工作都由 &lt;code&gt;Druid&lt;/code&gt; 完成。&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="2-涉及多种数据源时的处理方式"&gt;&lt;strong&gt;2. 涉及多种数据源时的处理方式&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;当项目中需要支持多个数据源（如 MySQL、Oracle、GBase 等）时，Spring Boot 提供了灵活的机制来实现多数据源的支持。以下是具体的解决方案：&lt;/p&gt;</description></item></channel></rss>