Spring Event尚未发布

时间:2017-10-04 23:15:28

标签: java spring spring-mvc spring-boot

我的自定义活动

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

1 个答案:

答案 0 :(得分:2)

我能够解决这个问题。代码更改如下:

public class TestEvent<E> implements ResolvableTypeProvider {
    private E object;

    @Override
    public ResolvableType getResolvableType() {
        return ResolvableType.forClassWithGenerics(getClass(),
               ResolvableType.forInstance(object));
       }
 }