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