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.更多等你发现

 

如何使用

 

640?wx_fmt=png

AutofacAnnotationModule有两种构造方法

  1. 可以传一个Assebly列表 (这种方式会注册传入的Assebly里面打了标签的类

  2. 可以传一个AsseblyName列表 (这种方式是先会根据AsseblyName查找Assebly 然后在注册)

 

支持的标签说明

 

Bean标签

说明:只能打在class上面 把某个类注册到autofac容器 例如:

1.无构造方法的方式 等同于 builder.RegisterType();

640?wx_fmt=png

2.指定Scope [需要指定AutofacScope属性 如果不指定为则默认为AutofacScope.InstancePerDependency]

640?wx_fmt=png

3.指定类型注册 等同于 builder.RegisterType().As()

640?wx_fmt=png

4.指定名字注册 等同于 builder.RegisterType().Keyed("a4")

640?wx_fmt=png

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 必须是无参数的方法

640?wx_fmt=png

640?wx_fmt=png

Autowired 自动装配

可以打在Field Property 构造方法的Parameter上面 其中Field 和 Property 支持在父类

640?wx_fmt=png

Value 和 PropertySource

 

PropertySource类似Spring里面的PropertySource 可以指定数据源 支持 xml json格式 支持内嵌资源

1.json格式的文件

640?wx_fmt=png

640?wx_fmt=png

2. xml格式的文件

640?wx_fmt=png

640?wx_fmt=png

3.不指定PropertySource的话会默认从工程目录的 appsettings.json获取值


原文地址:https://www.cnblogs.com/yudongdong/p/10285392.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/317700.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DZY Loves Math IV(杜教筛)

文章目录titlesolutioncodetitle solution 这道题是多么的妙啊,完全不是我能推出来的式子呢! 观察数据范围,有点奇怪欸,在暗示我?? 考虑暴力枚举nnn S(n,m)∑i1mφ(ni)S(n,m)\sum_{i1}^mφ(n\times i)S…

codeforces:CF1604 总结

前言 solve:4 rank:48!!!!!!!!!! 这排名我不理解了 solve4真真不算多啊… 而且前四题感觉也不算太难… 仔细看了看榜 哦… 因为这次…

IdentityServer4直播

大家好,很久没有更新公众号,让各位久等了,主要是最近出除了工作之外,一直私下在学习和研究IdentityServer4,后续会腾出一部分时间陆续更新公众号。对于IdentityServer4(简称IDS),网上的资料少之可怜&#x…

.NET Core 3.0:System.Data的变化

System.Data虽然不引人关注,但在.NET中,System.Data对于各种关系数据库的连接是非常重要的。System.Data也被称为ADO.NET,其前身是ActiveX Data Objects。System.Data提供了通过的框架,在她的基础上.NET数据驱动应用可以被构建。这…

蓝桥杯国赛 皮亚诺曲线距离

参考博客 题意: 题解: 这个很恶魔 本质好说就是找规律,但是贼难写。。 找了篇题解,做法就是大化小,将大阶化为成小阶,计算出离远点的距离。。。我感觉我是写不出来。。 挺秒的,要推公式估计要…

将 Visual Studio 的代码片段导出到 VS Code

导语和原文作者一样,水弟我现在也是使用 VS Code 和 Rider 作为主力开发工具,尤其是 VS Code 可以跨平台,又有丰富的插件支持和多种编程语言支持。当我从 VS 转移到以 VS Code 的开发过程中,遇到的最大问题就是代码提示的不完善&a…

如何基于 Kubernetes 构建完整的 DevOps 流水线

前言关于 DevOps 是一个很大的话题,它可能既涉及到公司的技术文化构建,也包括开发者技术能力的支持,这次技术干货分享主要是侧重于技术方面,就是如何用 Kubernetes 来服务好 DevOps 的流水线。本文从 4 个方面介绍:什么…

[SNOI2017]遗失的答案 (FWT)

description 小皮球在计算出答案之后,买了一堆皮肤,他心里很开心,但是一不小心,就忘记自己买了哪些皮肤了。 ||| 万幸的是,他还记得他把所有皮肤按照 1∼N 来编号,他买来的那些皮肤的编号(他至…

Abp中使用可视化的日志面板

如果你还不了解LogDashboard请看这里 使用logdashboard查看可视化日志。ABP的相关知识不做介绍如果有需要请阅读ABP官方文档ABP是Net下非常优秀的开发框架,在中国很多的项目都正在使用它。现在我们可以使用LogDashboard增强在使用ABP开发中的查看日志能力。下载ABP模板项目打开…

J - Just Multiplicative Inverse Gym - 102875J

J - Just Multiplicative Inverse Gym - 102875J 题目: 题解: 给定一个x,求出F(1,x)F(2,x)…F(x-1,x) 的和除以(x-1) F(x,p)题目已经给出 我们观察F()含义,再结合本题含义,本题并不是要求F(x,…

利用Topshelf把.NET Core Generic Host管理的应用程序部署为Windows服务

2019第一篇文章。此文源于前公司在迁移项目到.NET Core的过程中,希望使用Generic Host来管理定时任务程序时,没法部署到Windows服务的问题,而且官方也没给出解决方案,只能关注一下官方issue #809 等他们方解决了。官方文档只提供了…

开源项目商业模式分析(2) - 持续维护的重要性 - Selenium和WatiN

该系列第一篇发布后收到不少反馈,包括:第一篇里说的MonicaHQ不一定盈利没错,但是问题在于绝大多数开源项目商业数据并没有公开,从而无法判断其具体是否盈利。难得MonicaHQ是公开的,所以才用来做这系列文章的开篇。很多…

深入业务成为更好的软件架构师——信息化建设图鉴一二例

软件开发实际上跟英语比较类似,都是一项工具,服务于各行各业。从程序员的个人修养上来讲,一是要研习好软件开发这门技艺,二是要深入到所服务的行业。说到底,软件的终极目标是模拟业务,在此期间常常会有一个…

恭贺微软技术俱乐部苏州站正式成立

今天去苏州微软中国,参加了微软技术俱乐部苏州站的成立大会。大会的历程悉数经历,这会儿仍在为各位大佬、社区领袖的奉献精神所感动。在通过我们公司同事分享的链接报名时就了解到,大会上有苏震巍老师和蒋金楠老师的分享,便笃定了…

[HNOI2013]消毒 (匈牙利最大匹配)

Description 最近在生物实验室工作的小T遇到了大麻烦。 由于实验室最近升级的缘故,他的分格实验皿是一个长方体,其尺寸为abc,a、b、c 均为正整数。为了实验的方便,它被划分为abc个单位立方体区域,每个单位立方体尺寸为111。用(i,…

.NET Core微服务之路:基于Ocelot的API网关实现--http/https协议篇

前言 最近一直在忙公司和私下的兼职,白天十个小时,晚上四个小时,感觉每天都是打了鸡血似的,精神满满的,连自己那已经学打酱油的娃都很少关心,也有很长一段时间没有更新博客了,特别抱歉&#…

[NOI2009] 变换序列 (匈牙利最大匹配)

description … solution 我竟然一眼题!! 变换后的TTT数组是[0,n)[0,n)[0,n)的排列,变换规则也有,距离DDD也知道 很明显可以求出iii的可能变换对象 这不就是个最大匹配?? 无解就是匹配数量达不到nnn罢了…

使用 WeihanLi.Npoi 操作 CSV

Intro最近发现 csv 文件在很多情况下都在使用,而且经过大致了解,csv 格式简单,相比 excel 文件要小很多,读取也很是方便,而且也很通用,微软的 ml.net 的示例项目 用来训练模型的数据也是使用的 csv 来保存的…

种类问题

几乎所有种类问题都可以转化成两种模型之一 1.直接维护ans数组 2.统计二维数点问题 前置知识 二维静态数点 以y为第一元素,x为第二元素,原点优先级大于查询点,对所有点(原点查询点),然后求 for(int i1;…

「LibreOJ Round #11」Misaka Network 与测试 (网络流跑二分图匹配)

description 研究者们想要测试 Misaka Network,于是他们把 Misaka Network 中的所有妹妹们召集到了一起。 现在妹妹们排成了 N行 M 列,有的位置没有人。现在研究者们给每一个个体的超能力进行了评定,一共有三个能力等级:Level 1 …