歡迎光臨
每天分享高質量文章

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有兩種構造方法

  1. 可以傳一個Assebly串列 (這種方式會註冊傳入的Assebly裡面打了標簽的類
  2. 可以傳一個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 屬性自動裝配的型別
      1. Autowired 【預設值】代表打了Autowired標簽的才會自動裝配
      2. ALL 代表會裝配所有 等同於 builder.RegisterType().PropertiesAutowired()
      • AutoActivate 【預設為false】 如果為true代表autofac build完成後會自動創建 具體請參考 autofac官方文件
      • Ownership 【預設為空】 具體請參考 autofac官方文件
      • Interceptor 【預設為空】指定攔截器的Type
      • InterceptorType 攔截器型別 攔截器必須實現 Castle.DynamicProxy的 IInterceptor 接口, 有以下兩種
        1. Interface 【預設值】代表是接口型
        2. 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獲取值

赞(0)

分享創造快樂