AOP 还在配置吗改用打标签模式吧!
為什么我喜歡打標(biāo)簽來(lái)配置AOP
1. 配置多很混亂,代碼里面很難分辨出來(lái)哪些是AOP容器(比如屬性注入)
2. 對(duì)于代碼生成器生成的代碼里面還需要手動(dòng)加到配置里面
3. 連java spring現(xiàn)在都是清一色的注解來(lái)代替xml,這個(gè)就是趨勢(shì)所在
?
我基于Autofac開(kāi)發(fā)了一個(gè)基于標(biāo)簽來(lái)配置AOP的擴(kuò)展
?
NUGET :Install-Package Autofac.Annotation
?
開(kāi)源地址:
https://github.com/yuzd/Autofac.Annotation
幫忙點(diǎn)個(gè)star 謝謝!
?
特色
1.打個(gè)Bean標(biāo)簽就能注入到AOP
2.打個(gè)Autowired標(biāo)簽自動(dòng)裝配注入
3.打個(gè)Value標(biāo)簽自動(dòng)注入配置值(Soure標(biāo)簽配合使用)具體使用方法看下面的例子
4.支持?jǐn)r截器
5.更多等你發(fā)現(xiàn)
?
如何使用
?
AutofacAnnotationModule有兩種構(gòu)造方法
可以傳一個(gè)Assebly列表 (這種方式會(huì)注冊(cè)傳入的Assebly里面打了標(biāo)簽的類(lèi))
可以傳一個(gè)AsseblyName列表 (這種方式是先會(huì)根據(jù)AsseblyName查找Assebly 然后在注冊(cè))
?
支持的標(biāo)簽說(shuō)明
?
Bean標(biāo)簽
說(shuō)明:只能打在class上面 把某個(gè)類(lèi)注冊(cè)到autofac容器 例如:
1.無(wú)構(gòu)造方法的方式 等同于 builder.RegisterType();
2.指定Scope [需要指定AutofacScope屬性 如果不指定為則默認(rèn)為AutofacScope.InstancePerDependency]
3.指定類(lèi)型注冊(cè) 等同于 builder.RegisterType().As()
4.指定名字注冊(cè) 等同于 builder.RegisterType().Keyed("a4")
5.其他屬性說(shuō)明
InjectProperties 是否默認(rèn)裝配屬性 【默認(rèn)為true】
InjectPropertyType 屬性自動(dòng)裝配的類(lèi)型
Autowired 【默認(rèn)值】代表打了Autowired標(biāo)簽的才會(huì)自動(dòng)裝配
ALL 代表會(huì)裝配所有 等同于 builder.RegisterType().PropertiesAutowired()
AutoActivate 【默認(rèn)為false】 如果為true代表autofac build完成后會(huì)自動(dòng)創(chuàng)建 具體請(qǐng)參考?autofac官方文檔
Ownership 【默認(rèn)為空】 具體請(qǐng)參考?autofac官方文檔
Interceptor 【默認(rèn)為空】指定攔截器的Type
InterceptorType 攔截器類(lèi)型 攔截器必須實(shí)現(xiàn) Castle.DynamicProxy的 IInterceptor 接口, 有以下兩種
Interface 【默認(rèn)值】代表是接口型
Class 代表是class類(lèi)型 這種的話是需要將要攔截的方法標(biāo)virtual
InterceptorKey 如果同一個(gè)類(lèi)型的攔截器有多個(gè) 可以指定Key
InitMethod 當(dāng)實(shí)例被創(chuàng)建后執(zhí)行的方法名稱(chēng) 類(lèi)似Spring的init-method 可以是有參數(shù)(只能1個(gè)參數(shù)類(lèi)型是IComponentContext)和無(wú)參數(shù)的方法
DestroyMetnod 當(dāng)實(shí)例被Release時(shí)執(zhí)行的方法 類(lèi)似Spring的destroy-method 必須是無(wú)參數(shù)的方法
Autowired 自動(dòng)裝配
可以打在Field Property 構(gòu)造方法的Parameter上面 其中Field 和 Property 支持在父類(lèi)
Value 和 PropertySource
?
PropertySource類(lèi)似Spring里面的PropertySource 可以指定數(shù)據(jù)源 支持 xml json格式 支持內(nèi)嵌資源
1.json格式的文件
2. xml格式的文件
3.不指定PropertySource的話會(huì)默認(rèn)從工程目錄的 appsettings.json獲取值
原文地址:https://www.cnblogs.com/yudongdong/p/10285392.html
.NET社區(qū)新聞,深度好文,歡迎訪問(wèn)公眾號(hào)文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的AOP 还在配置吗改用打标签模式吧!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ML.NET 0.9特性简介
- 下一篇: IdentityServer4直播