1
2
这样做会有什么问题: 使用addListener(Listener,Enum)方法定义“Maintainer”接口。 创建一个实现Maintainer的DefaultMaintainer类(如上所述)。 然后,在每个侦听器类中,“inject”维护者接口(构造函数注入可能是一个不错的选择)。然后,侦听器可以向维护者注册自己。 除此之外,我还不完全清楚你现在对春天有什么困难!:) |
2
2
稍微偏离主题(因为这不是关于Spring的),但是在您的addListener实现中有一个争用条件:
如果两个线程同时调用此方法(对于以前没有侦听器的事件类型),map.get(event type)将在两个线程中返回空值,每个线程将创建自己的copyOnWriteArrayList(每个包含一个侦听器),一个线程将替换另一个线程创建的列表,第一个侦听器将被忽略。 要解决此问题,请更改:
到:
|
3
1
标准弹簧语法适用:
这更棘手。你
能够
使用
然而,这是不易操作的,并且可能容易出错。我在一个项目中尝试了类似的方法,并创建了一个Spring实用程序类来帮助解决这个问题。我现在没有可用的源代码,所以我将描述如何实现我所做的。
1)将侦听的事件类型重构为
将注册方法更改为
2)创建在上下文中查找所有相关侦听器的SpringHelper类,并为找到的每个侦听器调用Maintainer AddListener。我会从
|
4
0
我认为你在这方面是错的。我最近在一个类似这样的项目中使用过:
|
5
0
谢谢大家的回答。首先,快速跟进所有答案。
再次感谢你的帮助。 |