Skip to content
俞正东 edited this page Jan 13, 2023 · 23 revisions

Welcome to the Autofac.Annotation wiki!

大家好,欢迎关注autofac.Annotation项目,几年前公司转java技术栈接触到了Spring项目,很优秀,源码嚼了很多遍于是很想尝试把这套东西用在.net平台上。社区有个Spring.net项目已经多年不维护了,而且还是xml配置模式非基于注解的,无法与现有的SpringBoot项目同日而语。在SpringBoot项目中的常用的注解和扩展机制我都在这个项目中实现了,可以看下面介绍的已实现的功能一览!

  • Annotdation是注解的意思,在java项目里面 注解的概念和 csharp里面的 Attribute 的概念是一样的。
  • 本项目是基于Autofac(巨人的肩膀)的基础之上构建,选择用Autofac是它扩展性非常好,在实现Spring的细节上提供了便捷
  • 本项目的所有实现都参考Spring的设计思想,但是并不是纯粹的把java的代码换成csharp,功能上效果是和Spring看齐的,但代码实现上是自己实现的

本项目的目的

基于参考 Java的 Spring注解方式开发思想,

所有autofac容器的注册 和 装配 都是依赖标签来完成。

这样一来 一方面很容易分清楚 哪些是DI 哪些非DI, 哪些是拦截器,哪些需要拦截器,轻松实现切面编程, 代码也好看,吸收java的spring框架的优越的地方,配合.net语法的优越性,编程效率能够大大提升,具体体现在:

  • 控制反转(IOC)的思想,运用依赖注入(DI)的技术,让我们管理对象的时候再也不用new new new了!防止大量对象的创建!防止组件之间的强依赖!
  • AOP(面向切面编程)技术,能够使用少量代码搭建完美的的日志管理,权限管理,运行期监控!
  • 低耦合特性:通过依赖注入特性,可以借助容器创建,管理对象,防止在代码中硬性注入对象,防止对象混乱!

支持的标签一览

标签名称 使用位置 使用说明
AutoConfiguration 打在class上面 自动装配class里面带有Bean标签的方法
Bean 打在方法上面 配合AutoConfiguration标签使用
Component 打在class上面 自动注册
Autowired 打在构造方法的Parameter,类的Property,类的Field,类的方法 自动装配
PropertySource 打在class上面 配合Value标签使用,设置Value的数据源,支持静态比如json,xml,支持资源内嵌,也支持动态数据源(比如nacos)
Value 打在构造方法的Parameter,类的Property,类的Field 静态/动态(例如nacos)数据装配,支持强大的EL表达式
Pointcut 打在class上面 切面配置,一个切面拦截N多个对象,配合Before After AfterReturn AfterThrows Around 实现拦截器链
Import 打在继承了ImportSelector的class上面 扩展注册Component
Order 打在了class上面,和Compoment一起使用 值越小的越先加载
Conditional 打在class或者方法上面 条件加载,自定义实现的
ConditionOnBean 打在标有Bean注解的方法上面 条件加载
ConditionOnMissingBean 打在标有Bean注解的方法上面 条件加载
ConditionOnClass 打在class或者方法上面 条件加载
ConditionOnMissingClass 打在class或者方法上面 条件加载
ConditionOnProperty 打在class或者方法上面 条件加载
ConditionOnProperties 打在class或者方法上面 条件加载
PostConstruct 打在方法上面 当类初始化完成后调用
PreDestory 打在方法上面 当容器Dispose前调用
DependsOn 可以配合Bean和Component使用 A的实例化依赖另一个B的实例化,但是A并不需要持有一个B的对象