51 lines
12 KiB
JavaScript
51 lines
12 KiB
JavaScript
import{_ as t,r as c,o as p,c as o,b as n,d as s,e as l,a}from"./app-4f4af2d5.js";const i="/docs/hzy-admin/ioc-aop-1.jpg",u={},d=a(`<h1 id="ioc-和-aop" tabindex="-1"><a class="header-anchor" href="#ioc-和-aop" aria-hidden="true">#</a> Ioc 和 Aop</h1><div class="custom-container warning"><p class="custom-container-title">提示</p><p>我们只需要对服务添加继承一个接口即可自动注入[服务将变为 ioc 对象],框架采用微软原汁原味的ioc注入,提倡构造注入。</p></div><div class="language-csharp line-numbers-mode" data-ext="cs"><pre class="language-csharp"><code><span class="token keyword">public</span> <span class="token keyword">interface</span> <span class="token class-name">IAccountService</span> <span class="token punctuation">:</span> <span class="token type-list"><span class="token class-name">IScopedDependency</span></span>
|
||
<span class="token punctuation">{</span>
|
||
<span class="token return-type class-name">Task<span class="token punctuation"><</span><span class="token keyword">string</span><span class="token punctuation">></span></span> <span class="token function">GetUserNameAsync</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
|
||
<span class="token punctuation">}</span>
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="框架提供了多种类型的注入接口" tabindex="-1"><a class="header-anchor" href="#框架提供了多种类型的注入接口" aria-hidden="true">#</a> 框架提供了多种类型的注入接口</h2><blockquote><p>可以根据自己的业务需求选择不同的注入方式,但是框架封装好了,你的服务只需要继承 ApplicationService 类即可。</p></blockquote><blockquote><p>除非自定义一些特殊的服务,否则不需要继承其他的接口。</p></blockquote><blockquote><p>带有 Self 名字结尾注入服务自身,不带 Self 名字结尾代表注入接口。</p></blockquote>`,7),r={href:"https://gitee.com/hzy6/hzy-scan-di-service/wikis/pages",target:"_blank",rel:"noopener noreferrer"},k=a(`<div class="language-csharp line-numbers-mode" data-ext="cs"><pre class="language-csharp"><code><span class="token keyword">namespace</span> <span class="token namespace">MiaoYu<span class="token punctuation">.</span>Framework<span class="token punctuation">.</span>AutoRegisterIOC</span><span class="token punctuation">;</span>
|
||
|
||
<span class="token doc-comment comment">/// <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>summary</span><span class="token punctuation">></span></span></span>
|
||
<span class="token doc-comment comment">/// 注册 Scoped</span>
|
||
<span class="token doc-comment comment">/// <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>summary</span><span class="token punctuation">></span></span></span>
|
||
<span class="token keyword">public</span> <span class="token keyword">interface</span> <span class="token class-name">IScopedDependency</span> <span class="token punctuation">{</span> <span class="token punctuation">}</span>
|
||
|
||
<span class="token doc-comment comment">/// <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>summary</span><span class="token punctuation">></span></span></span>
|
||
<span class="token doc-comment comment">/// 注册 Scoped 自身实现类</span>
|
||
<span class="token doc-comment comment">/// <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>summary</span><span class="token punctuation">></span></span></span>
|
||
<span class="token keyword">public</span> <span class="token keyword">interface</span> <span class="token class-name">IScopedSelfDependency</span> <span class="token punctuation">{</span> <span class="token punctuation">}</span>
|
||
|
||
<span class="token doc-comment comment">/// <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>summary</span><span class="token punctuation">></span></span></span>
|
||
<span class="token doc-comment comment">/// 注册 Singleton</span>
|
||
<span class="token doc-comment comment">/// <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>summary</span><span class="token punctuation">></span></span></span>
|
||
<span class="token keyword">public</span> <span class="token keyword">interface</span> <span class="token class-name">ISingletonDependency</span> <span class="token punctuation">{</span> <span class="token punctuation">}</span>
|
||
|
||
<span class="token doc-comment comment">/// <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>summary</span><span class="token punctuation">></span></span></span>
|
||
<span class="token doc-comment comment">/// 注册 Singleton 自身实现类</span>
|
||
<span class="token doc-comment comment">/// <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>summary</span><span class="token punctuation">></span></span></span>
|
||
<span class="token keyword">public</span> <span class="token keyword">interface</span> <span class="token class-name">ISingletonSelfDependency</span> <span class="token punctuation">{</span> <span class="token punctuation">}</span>
|
||
|
||
<span class="token doc-comment comment">/// <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>summary</span><span class="token punctuation">></span></span></span>
|
||
<span class="token doc-comment comment">/// 注册 Transient</span>
|
||
<span class="token doc-comment comment">/// <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>summary</span><span class="token punctuation">></span></span></span>
|
||
<span class="token keyword">public</span> <span class="token keyword">interface</span> <span class="token class-name">ITransientDependency</span> <span class="token punctuation">{</span> <span class="token punctuation">}</span>
|
||
|
||
<span class="token doc-comment comment">/// <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>summary</span><span class="token punctuation">></span></span></span>
|
||
<span class="token doc-comment comment">/// 注册 Transient 自身实现类</span>
|
||
<span class="token doc-comment comment">/// <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>summary</span><span class="token punctuation">></span></span></span>
|
||
<span class="token keyword">public</span> <span class="token keyword">interface</span> <span class="token class-name">ITransientSelfDependency</span> <span class="token punctuation">{</span> <span class="token punctuation">}</span>
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="aop-拦截器" tabindex="-1"><a class="header-anchor" href="#aop-拦截器" aria-hidden="true">#</a> Aop 拦截器</h2><div class="custom-container warning"><p class="custom-container-title">提示</p><p>通过这个注入方式,我们可以对程序做拦截器,现在系统默认有4种,可以通过继承 AopBaseAttribute 实现自定义拦截特性</p></div><p><img src="`+i+`" alt="定时任务"></p><h2 id="配置信息注入标记-appsettings-你的json节点地址" tabindex="-1"><a class="header-anchor" href="#配置信息注入标记-appsettings-你的json节点地址" aria-hidden="true">#</a> 配置信息注入标记 [AppSettings(“你的json节点地址”)]</h2><div class="custom-container tip"><p class="custom-container-title">提示</p><p>针对 appsettings.json 配置信息</p><p>1、必须是属性 不能是 字段</p><p>2、属性必须是 virtual</p></div><div class="language-csharp line-numbers-mode" data-ext="cs"><pre class="language-csharp"><code><span class="token punctuation">[</span><span class="token function">AppSettings</span><span class="token punctuation">(</span><span class="token string">"ConnectionStrings:DefaultConnection"</span>"<span class="token punctuation">)</span><span class="token punctuation">]</span>
|
||
<span class="token keyword">public</span> <span class="token keyword">virtual</span> <span class="token return-type class-name"><span class="token keyword">string</span></span> ConnectionString <span class="token punctuation">{</span> <span class="token keyword">get</span><span class="token punctuation">;</span> <span class="token keyword">set</span><span class="token punctuation">;</span> <span class="token punctuation">}</span>
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="服务实例注入标记-autowired" tabindex="-1"><a class="header-anchor" href="#服务实例注入标记-autowired" aria-hidden="true">#</a> 服务实例注入标记 [Autowired]</h2><div class="custom-container tip"><p class="custom-container-title">提示</p><p>注入不需要构造通过 Autowired 特性即可拿到服务实例</p><p>1、必须是属性 不能是 字段</p><p>2、属性必须是 virtual</p></div><div class="language-csharp line-numbers-mode" data-ext="cs"><pre class="language-csharp"><code><span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">Test</span> <span class="token punctuation">:</span> <span class="token type-list"><span class="token class-name">ITransientSelfDependency</span></span>
|
||
<span class="token punctuation">{</span>
|
||
<span class="token punctuation">[</span><span class="token attribute"><span class="token class-name">Autowired</span></span><span class="token punctuation">]</span>
|
||
<span class="token keyword">public</span> <span class="token keyword">virtual</span> <span class="token return-type class-name">IAccountService</span> _accountService <span class="token punctuation">{</span> <span class="token keyword">get</span><span class="token punctuation">;</span> <span class="token keyword">set</span><span class="token punctuation">;</span> <span class="token punctuation">}</span>
|
||
|
||
<span class="token keyword">public</span> <span class="token return-type class-name"><span class="token keyword">void</span></span> <span class="token function">Run</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
|
||
<span class="token punctuation">{</span>
|
||
_accountService<span class="token punctuation">.</span><span class="token function">GetAccountContext</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 获取当前登录人信息</span>
|
||
<span class="token comment">// todo ...</span>
|
||
<span class="token punctuation">}</span>
|
||
<span class="token punctuation">}</span>
|
||
|
||
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,10);function m(v,b){const e=c("ExternalLinkIcon");return p(),o("div",null,[d,n("blockquote",null,[n("p",null,[s("更多操作请看此链接:"),n("a",r,[s("https://gitee.com/hzy6/hzy-scan-di-service/wikis/pages"),l(e)])])]),k])}const y=t(u,[["render",m],["__file","ioc-aop.html.vue"]]);export{y as default};
|