Update Spring.md
调整配图的配色和画法:换成更浅的蓝、青、紫和暖灰,去掉阴影,方框加同色细描边,箭头改为实心。
|
Before Width: | Height: | Size: 94 KiB After Width: | Height: | Size: 96 KiB |
|
Before Width: | Height: | Size: 162 KiB After Width: | Height: | Size: 166 KiB |
@@ -1,46 +1,43 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="680" height="230" viewBox="0 0 680 230">
|
||||
<style>
|
||||
text { font-family: "PingFang SC", "Microsoft YaHei", Helvetica, Arial, sans-serif; fill: #666; font-size: 12px; }
|
||||
.title { font-weight: bold; font-size: 15px; fill: #777; text-anchor: middle; }
|
||||
text { font-family: "PingFang SC", "Microsoft YaHei", Helvetica, Arial, sans-serif; fill: #3F3F3F; font-size: 12px; }
|
||||
.title { font-weight: bold; font-size: 15px; fill: #333; text-anchor: middle; }
|
||||
.b { font-weight: bold; }
|
||||
.c { text-anchor: middle; }
|
||||
.e { text-anchor: end; }
|
||||
.note { fill: #C0605A; }
|
||||
.ok { fill: #6A9F68; }
|
||||
.sub { font-size: 11px; fill: #888; }
|
||||
.sub { font-size: 11px; fill: #6E6E6E; }
|
||||
.mono { font-family: Menlo, Consolas, monospace; }
|
||||
.arrow { stroke: #666; stroke-width: 1.3; fill: none; marker-end: url(#a); }
|
||||
.arrow { stroke: #555; stroke-width: 1.1; fill: none; marker-end: url(#a); }
|
||||
.red { stroke: #C0605A; marker-end: url(#r); }
|
||||
.green { stroke: #6A9F68; marker-end: url(#g); }
|
||||
.dash { stroke-dasharray: 5 4; }
|
||||
.line { stroke: #666; stroke-width: 1.3; fill: none; }
|
||||
.line { stroke: #555; stroke-width: 1.1; fill: none; }
|
||||
.frame { fill: none; stroke: #999; stroke-width: 1; stroke-dasharray: 4 3; }
|
||||
.shadow { fill: #DADADA; }
|
||||
</style>
|
||||
<defs>
|
||||
<marker id="a" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
|
||||
<path d="M1,1 L9,5 L1,9" fill="none" stroke="#666" stroke-width="1.6"/>
|
||||
<path d="M1,1.5 L9.5,5 L1,8.5 z" fill="#555"/>
|
||||
</marker>
|
||||
<marker id="r" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
|
||||
<path d="M1,1 L9,5 L1,9" fill="none" stroke="#C0605A" stroke-width="1.6"/>
|
||||
<path d="M1,1.5 L9.5,5 L1,8.5 z" fill="#C0605A"/>
|
||||
</marker>
|
||||
<marker id="g" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
|
||||
<path d="M1,1 L9,5 L1,9" fill="none" stroke="#6A9F68" stroke-width="1.6"/>
|
||||
<path d="M1,1.5 L9.5,5 L1,8.5 z" fill="#6A9F68"/>
|
||||
</marker>
|
||||
</defs>
|
||||
<rect width="100%" height="100%" fill="#FFFFFF"/>
|
||||
|
||||
<text x="340" y="28" class="title">自调用不经过代理</text>
|
||||
<rect x="22" y="84" width="90" height="50" rx="6" class="shadow"/>
|
||||
<rect x="20" y="82" width="90" height="50" rx="6" fill="#DDD7F6"/>
|
||||
<rect x="20" y="82" width="90" height="50" rx="6" fill="#E6E3FA" stroke="#B8B0DE"/>
|
||||
<text x="65" y="111.5" class="b c">调用方</text>
|
||||
<rect x="192" y="64" width="150" height="90" rx="6" class="shadow"/>
|
||||
<rect x="190" y="62" width="150" height="90" rx="6" fill="#B0E3E6"/>
|
||||
<rect x="190" y="62" width="150" height="90" rx="6" fill="#C6ECE9" stroke="#7DBCB7"/>
|
||||
<text x="265" y="92" class="c b">代理对象</text>
|
||||
<text x="265" y="114" class="c sub">执行切面逻辑</text>
|
||||
<text x="265" y="132" class="c sub">例如开启、提交事务</text>
|
||||
<rect x="402" y="52" width="260" height="140" rx="6" class="shadow"/>
|
||||
<rect x="400" y="50" width="260" height="140" rx="6" fill="#B1DDF0"/>
|
||||
<rect x="400" y="50" width="260" height="140" rx="6" fill="#C6E4FB" stroke="#7FB2D6"/>
|
||||
<text x="412" y="72" class="b">原始对象</text>
|
||||
<rect x="420" y="86" width="200" height="34" rx="4" fill="#FFFFFF" stroke="#C8C8C8"/>
|
||||
<text x="520" y="107.5" class="c mono sub">outer()</text>
|
||||
|
||||
|
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 2.9 KiB |
@@ -1,31 +1,31 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="720" height="400" viewBox="0 0 720 400">
|
||||
<style>
|
||||
text { font-family: "PingFang SC", "Microsoft YaHei", Helvetica, Arial, sans-serif; fill: #666; font-size: 12px; }
|
||||
.title { font-weight: bold; font-size: 15px; fill: #777; text-anchor: middle; }
|
||||
text { font-family: "PingFang SC", "Microsoft YaHei", Helvetica, Arial, sans-serif; fill: #3F3F3F; font-size: 12px; }
|
||||
.title { font-weight: bold; font-size: 15px; fill: #333; text-anchor: middle; }
|
||||
.b { font-weight: bold; }
|
||||
.c { text-anchor: middle; }
|
||||
.e { text-anchor: end; }
|
||||
.note { fill: #C0605A; }
|
||||
.ok { fill: #6A9F68; }
|
||||
.sub { font-size: 11px; fill: #888; }
|
||||
.sub { font-size: 11px; fill: #6E6E6E; }
|
||||
.mono { font-family: Menlo, Consolas, monospace; }
|
||||
.arrow { stroke: #666; stroke-width: 1.3; fill: none; marker-end: url(#a); }
|
||||
.arrow { stroke: #555; stroke-width: 1.1; fill: none; marker-end: url(#a); }
|
||||
.red { stroke: #C0605A; marker-end: url(#r); }
|
||||
.green { stroke: #6A9F68; marker-end: url(#g); }
|
||||
.dash { stroke-dasharray: 5 4; }
|
||||
.line { stroke: #666; stroke-width: 1.3; fill: none; }
|
||||
.line { stroke: #555; stroke-width: 1.1; fill: none; }
|
||||
.frame { fill: none; stroke: #999; stroke-width: 1; stroke-dasharray: 4 3; }
|
||||
.shadow { fill: #DADADA; }
|
||||
</style>
|
||||
<defs>
|
||||
<marker id="a" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
|
||||
<path d="M1,1 L9,5 L1,9" fill="none" stroke="#666" stroke-width="1.6"/>
|
||||
<path d="M1,1.5 L9.5,5 L1,8.5 z" fill="#555"/>
|
||||
</marker>
|
||||
<marker id="r" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
|
||||
<path d="M1,1 L9,5 L1,9" fill="none" stroke="#C0605A" stroke-width="1.6"/>
|
||||
<path d="M1,1.5 L9.5,5 L1,8.5 z" fill="#C0605A"/>
|
||||
</marker>
|
||||
<marker id="g" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="7" markerHeight="7" orient="auto-start-reverse">
|
||||
<path d="M1,1 L9,5 L1,9" fill="none" stroke="#6A9F68" stroke-width="1.6"/>
|
||||
<path d="M1,1.5 L9.5,5 L1,8.5 z" fill="#6A9F68"/>
|
||||
</marker>
|
||||
</defs>
|
||||
<rect width="100%" height="100%" fill="#FFFFFF"/>
|
||||
@@ -39,32 +39,32 @@
|
||||
<text x="650" y="74" class="c sub">生成提前引用的工厂</text>
|
||||
<rect x="20" y="90" width="680" height="50" rx="6" fill="#F7F7F7"/>
|
||||
<text x="32" y="120">① 实例化 A,把 A 的工厂放入三级缓存</text>
|
||||
<rect x="602" y="102" width="96" height="26" rx="4" fill="#DDD7F6" stroke="#C8C8C8"/>
|
||||
<rect x="602" y="102" width="96" height="26" rx="4" fill="#E6E3FA" stroke="#C8C8C8"/>
|
||||
<text x="650" y="119.5" class="c sub">A 的工厂</text>
|
||||
<rect x="20" y="146" width="680" height="50" rx="6" fill="#FFFFFF"/>
|
||||
<text x="32" y="176">② 填充 A 的属性时需要 B,实例化 B</text>
|
||||
<rect x="602" y="150" width="96" height="20" rx="4" fill="#DDD7F6" stroke="#C8C8C8"/>
|
||||
<rect x="602" y="150" width="96" height="20" rx="4" fill="#E6E3FA" stroke="#C8C8C8"/>
|
||||
<text x="650" y="164.5" class="c sub">A 的工厂</text>
|
||||
<rect x="602" y="172" width="96" height="20" rx="4" fill="#DDD7F6" stroke="#C8C8C8"/>
|
||||
<rect x="602" y="172" width="96" height="20" rx="4" fill="#E6E3FA" stroke="#C8C8C8"/>
|
||||
<text x="650" y="186.5" class="c sub">B 的工厂</text>
|
||||
<rect x="20" y="202" width="680" height="50" rx="6" fill="#F7F7F7"/>
|
||||
<text x="32" y="222">③ 填充 B 时需要 A:调用 A 的工厂,</text>
|
||||
<text x="54" y="240">得到 A 的提前引用,移入二级缓存</text>
|
||||
<rect x="492" y="214" width="96" height="26" rx="4" fill="#DDD7F6" stroke="#C8C8C8"/>
|
||||
<rect x="492" y="214" width="96" height="26" rx="4" fill="#E6E3FA" stroke="#C8C8C8"/>
|
||||
<text x="540" y="231.5" class="c sub">A(未完成)</text>
|
||||
<rect x="602" y="214" width="96" height="26" rx="4" fill="#DDD7F6" stroke="#C8C8C8"/>
|
||||
<rect x="602" y="214" width="96" height="26" rx="4" fill="#E6E3FA" stroke="#C8C8C8"/>
|
||||
<text x="650" y="231.5" class="c sub">B 的工厂</text>
|
||||
<rect x="20" y="258" width="680" height="50" rx="6" fill="#FFFFFF"/>
|
||||
<text x="32" y="288">④ B 拿到 A,完成初始化</text>
|
||||
<rect x="382" y="270" width="96" height="26" rx="4" fill="#B1DDF0" stroke="#C8C8C8"/>
|
||||
<rect x="382" y="270" width="96" height="26" rx="4" fill="#C6E4FB" stroke="#C8C8C8"/>
|
||||
<text x="430" y="287.5" class="c sub">B</text>
|
||||
<rect x="492" y="270" width="96" height="26" rx="4" fill="#DDD7F6" stroke="#C8C8C8"/>
|
||||
<rect x="492" y="270" width="96" height="26" rx="4" fill="#E6E3FA" stroke="#C8C8C8"/>
|
||||
<text x="540" y="287.5" class="c sub">A(未完成)</text>
|
||||
<rect x="20" y="314" width="680" height="50" rx="6" fill="#F7F7F7"/>
|
||||
<text x="32" y="344">⑤ A 拿到 B,完成初始化</text>
|
||||
<rect x="382" y="318" width="96" height="20" rx="4" fill="#B1DDF0" stroke="#C8C8C8"/>
|
||||
<rect x="382" y="318" width="96" height="20" rx="4" fill="#C6E4FB" stroke="#C8C8C8"/>
|
||||
<text x="430" y="332.5" class="c sub">A</text>
|
||||
<rect x="382" y="340" width="96" height="20" rx="4" fill="#B1DDF0" stroke="#C8C8C8"/>
|
||||
<rect x="382" y="340" width="96" height="20" rx="4" fill="#C6E4FB" stroke="#C8C8C8"/>
|
||||
<text x="430" y="354.5" class="c sub">B</text>
|
||||
<text x="20" y="384" class="sub">A 需要 AOP 代理时,工厂在第 ③ 步直接返回 A 的代理,B 拿到的就是最终放入容器的对象。</text>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.2 KiB |