我有一个像这样定义的类:
public class MyClass extends SimpleChannelInboundHandler<DataFrame<ByteBuf>> implements ApplicationEventPublisherAware
(SimpleChannelInboundHandler是一个io.netty类。)
然后,在我的xml文件中,我像这样定义MyClass:
<bean id="MyClass" class="com.mypackage.MyClass" />
根据文件:
在配置时,Spring容器会检测到它 EmailService实现了ApplicationEventPublisherAware和will 自动调用setApplicationEventPublisher()。
但是当我运行它时它是空的。
任何想法为什么?
由于
答案 0 :(得分:1)
ApplicationEventPublisherAware
的常见用法模式如下:
package example;
import org.springframework.stereotype.*;
import org.springframework.context.*;
@Component
public class MyBean implements ApplicationEventPublisherAware {
ApplicationEventPublisher applicationEventPublisher;
public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
System.out.println("publisher: " + applicationEventPublisher);
this.applicationEventPublisher = applicationEventPublisher;
}
... (use applicationEventPublisher in methods)
}
您只需要确保通过组件扫描/配置/ <bean>
标记将bean真正添加到上下文中,尝试将其注入另一个bean来检查它。
答案 1 :(得分:0)
您应该使用ApplicationContext的getBean方法获取MyClass的实例,而不是自己使用new关键字进行初始化。这样Spring Container可以设置ApplicationEventPublisher。