我的自定义活动
public class TestEvent<E> {
private E object;
}
测试课
public class Test{
String message;
}
侦听事件的类具有以下侦听器
@Component
public class TestEventListener{
// This listener works
@EventListener
public void testEvent(Test test) {
logger.info("Test Received");
}
// This listener doesn't work
@EventListener
public void testEvent(TestEvent<Test> testEvent) {
logger.info("Received");
}
}
发布活动的代码
@Service
public class TestService{
@Autowired
private ApplicationEventPublisher applicationEventPublisher;
public void sendMessage(){
Test test = new Test();
// Event is published
applicationEventPublisher.publishEvent(test);
TestEvent<Test> testEvent = new TestEvent(test)
// Event is not published
applicationEventPublisher.publishEvent(testEvent);
}
}
不确定代码有什么问题但是呼叫从未到达我的听众。我正在使用Spring 4.3.3 RELEASE
答案 0 :(得分:2)
我能够解决这个问题。代码更改如下:
public class TestEvent<E> implements ResolvableTypeProvider {
private E object;
@Override
public ResolvableType getResolvableType() {
return ResolvableType.forClassWithGenerics(getClass(),
ResolvableType.forInstance(object));
}
}