@Inject源码翻译
来源:互联网 发布:神仙道心动网络 编辑:程序博客网 时间:2024/06/07 09:28
package javax.inject;import java.lang.annotation.Target;import java.lang.annotation.Retention;import java.lang.annotation.Documented;import static java.lang.annotation.RetentionPolicy.RUNTIME;import static java.lang.annotation.ElementType.METHOD;import static java.lang.annotation.ElementType.CONSTRUCTOR;import static java.lang.annotation.ElementType.FIELD;/** * {@code @Inject}支持构造器、方法、字段,也可以是静态实例成员。一个可注入的成员有着以下修饰符:private, package-private, * protected, public。注入的顺序:构造器 --> 字段 --> 方法。字段和方法上,超类的注入先于子类的注入。在相同的类中, * 字段之间和方法之间注入的顺序不作要求。 * * {@code @Inject}可以注解无参或有参构造器,每个类最多只能注解一个构造器。若果注入public且无参构造器而没有其他构造器, * 则注入的是默认构造器。字段不能为final修饰;方法不能是abstract * 例如: * public class Car { * // Injectable constructor * @Inject public Car(Engine engine) { ... } * * // Injectable field * @Inject private Provider<Seat> seatProvider; * * // Injectable package-private method * @Inject void install(Windshield windshield, Trunk trunk) { ... } * } * * {@code @Inject}被注解的方法覆写了已经被注解的方法,则注入是最终的实例;没有注解的方法覆写一个被注解的方法,则不能注入 * * 带有任何访问修饰符(包括private)的成员都可以注入。 * 非public成员,在平台或注射器的局限性(像安全限制或缺少反射支持)可能阻止注入 * * 1.Qualifiers:限定符 * 2.Injectable Values:可注入的值 * 3.Circular Dependencies:循环依赖(例如:A依赖B,B依赖A) * 解决办法:a.平移:比如A和B互相依赖,那么可以将B依赖A的那部分代码,移动到B中 * b.下移,比如A和B互相依赖,同时它们都依赖C,那么可以将B和A相互依赖的那部分代码,移动到C中 * 参考资料:http://hck.iteye.com/blog/1728329 * @author TCM * @create 2017年10月18日下午3:16:55 * @see javax.inject.Qualifier @Qualifier * @see javax.inject.Provider */@Target({ METHOD, CONSTRUCTOR, FIELD })@Retention(RUNTIME)@Documentedpublic @interface Inject {}
阅读全文
0 0
- @Inject源码翻译
- nutch源码分析1------inject
- inject
- @Inject
- @Inject
- nutch源码分析1------inject(续)
- nutch源码分析1------inject(续续)
- golang: Martini之inject源码分析
- golang: Martini之inject源码分析
- 【Struts2源码】@Inject查找并缓存注入器
- tasklet源码注释翻译
- AsyncTask源码翻译
- TextUtils源码翻译
- Handler源码翻译
- Serializable源码翻译
- @Generated源码翻译
- @PostConstruct、@PreDestroy源码翻译
- @ManagedBean源码翻译
- "error while loading shared libraries: xxx.so.x" 错误的原因和解决办法
- 关于音乐播放器-不定时更新
- error C2065:未申明的标识符
- jstl标签的使用
- mysql基础知识
- @Inject源码翻译
- Gym 101503C Twisting the Number(思维+枚举)
- webpack
- C-单向链表的基本操作
- 如何在j2ee项目中处理高并发量访问?
- Android 7.0 虚拟按键(NavigationBar)源码分析 之 View的创建流程
- 树莓派安装Ubuntu core
- Redis存取List对象的实践
- 使用 Anaconda 管理 Python 环境