日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

AOP 还在配置吗改用打标签模式吧!

發(fā)布時(shí)間:2023/12/4 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AOP 还在配置吗改用打标签模式吧! 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

為什么我喜歡打標(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)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。