# **注意事项** * ### **依赖闭环** 在进行依赖注入的时候,有时候会出现一种比较头疼的情况`依赖闭环`。 > 先声明,这个名词儿是我自创的,并不专业 所谓依赖闭环,就是我有A,B两个对象,我要在A中注入B,同时我又要在B中注入A。 最简单的依赖闭环就是在A中注入自己。如下举例: ```java /** 在自己中注入自己*/ @Beans public class HelloWorld { @Depend private HelloWorld helloWorld; } ``` 功能开发结束后我发现这种情况会导形同无限递归一样的效果。个人功底有限,虽然思考出了在全部情况下解决此问题的方案,但是那种方案略显麻烦。所以目前为止,只有在**一种**情况下可以允许以上的`依赖闭环`情况: **在此闭环中,所有的依赖均为单例且@Depend的`nonNull`参数为true(默认即为true)** 其余情况便会引发无限递归的内存溢出问题,敬请注意。此问题有可能会在后续版本中进行优化但是目前来讲暂时不会。 > 比较麻烦的问题。 * ### **单例的监听函数** 由于依赖注入功能增加了动态参数注入,你可以将监听函数的参数填写并注入在整个监听类的上方, 或者写一个封装类来接收他们。 但是这里会出现一个问题: **将动态参数注入到单例的监听函数中。 \*\*** **很显而易见的,这样会导致严重的问题,例如:参数注入一次后将无法再次注入、线程安全问题等等一系列的问题。** **我将会在后续版本中推出解决方案,例如:监听器类默认**非单例模式\*\*。但是截止到`v1.1-BETA`为止,这个问题还没有得到解决。 所以,在使用 **v1.1-BETA 或更低版本** 的时候,我强烈建议将所有的监听器类都标注为**非单例模式**。