首页 > 解决方案 > 为什么我的自定义 AbstractMongoEventListener 没有被调用?

问题描述

我创建了自定义侦听器来保存引用的文档,但它没有被调用。

文档:

@Getter
@Setter
@ToString(exclude = {"addresses","accounts"})
@Document("customers")
public class Customer {
    private String id;
    private String firstName;
    private String lastName;
    @DBRef(lazy = true)
    private List<Address> addresses;
    @DBRef(lazy = true)
    private List<Account> accounts;

}

听众:

@Component
public class CascadeSaveListener extends AbstractMongoEventListener<Customer> {
    private MongoTemplate mongoTemplate;

    public CascadeSaveListener(MongoTemplate mongoTemplate) {
        this.mongoTemplate = mongoTemplate;
    }

    @Override
    public void onBeforeSave(BeforeSaveEvent<Customer> event) {
        Customer customer = event.getSource();
     customer.getAccounts()
             .forEach(mongoTemplate::save);
     customer.getAddresses().forEach(mongoTemplate::save);

    }
}

从存储库创建文档的方法:

@Override
    public Customer createCustomer(Customer customer) {
       return mongoTemplate.insert(customer);
    }

我保存客户的应用程序运行器

@Bean
    public ApplicationRunner applicationRunner(CustomerRepository customerRepository){
        return args-> customerRepository.createCustomer(createCustomer());
    }

但它没有被调用,我得到错误,为什么会发生?

标签: javaspringspring-data-mongodb

解决方案


推荐阅读