java - 从 Spring 托管 bean 向监听器发送事件

标签 java spring

我想在我的存储库层中创建一个事件通知程序,以便我可以添加监听器。我正在使用 Spring,我想知道这是否是一种好的方法?或者有更好的方法在 Spring 中实现通知/监听器吗?

@Repository
public class JdbcRepository {

    private List<InsertListener> insertListeners;

    public void insert(final SomeObject object) {
        // Ommited code for brewity
        for (InsertListener listener : insertListeners) {
            listener.notifiy(...);
        }
    }
}

Spring 配置 xml

<bean id="jdbcRepository" class="mypackage.JdbcRepository">
    <property>
        <bean ref="myRepositoryListeners" />
    </property>
</bean>

<bean id="myRepositoryListeners" class="java.util.List">
    <constructor-arg>
    <list>
        <ref bean="..." />
        <ref bean="..." />
    </list>
    </constructor-arg>
</bean>

最佳答案

你可以这样做

public class JdbcRepository {
    @Autowired
    ApplicationContext context;
    Collection<InsertListener> listeners;

    @PostConstruct
    public void init() {
        listeners = context.getBeansOfType(InsertListener.class).values();
    }
...

上下文.xml

<context:annotation-config />
<bean id="l1" class="InsertListener" />
<bean id="l2" class="InsertListener" />
<bean id="repo" class="JdbcRepository" />

关于java - 从 Spring 托管 bean 向监听器发送事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15545368/

相关文章:

java - 在 Intellij : ClassNotFoundException: org. apache.woden.WSDLException 中生成 WSDL 时出错

java - Android Marshmallow 6.0 webview 在运行时请求权限位置

java - 无法执行目标org.springframework.boot :spring-boot-maven-plugin:2. 1.0.RELEASE

java - 通过 RequestMapping 从其他方法调用 Spring Controller 方法

spring - 如何在 spring mvc 表单中验证多个模型?

java - 如何在 Spring WS 中处理语法不正确的 XML?

java - Android显示软键盘时如何获取Edittext输入类型

java - 如何在 Java Mad Libs 程序中使用随机发生器?

java - 用手指画画

java - 根据查询参数过滤 API 响应 json 输出