簡體   English   中英

如何使用 PropertyChangeSupport 和 PropertyChangeListener?

[英]How to use PropertyChangeSupport and PropertyChangeListener?

@Controller
@RequestMapping("/scrape")
public class ScrapeController {
    private final PropertyChangeSupport pcs = new PropertyChangeSupport(this);

    public void addPropertyChangeListener(PropertyChangeListener listener) {
        this.pcs.addPropertyChangeListener(listener);
    }

    public void removePropertyChangeListener(PropertyChangeListener listener) {
        this.pcs.removePropertyChangeListener(listener);
    }

    @GetMapping({"/", ""})
    public String scrape(){

        this.pcs.firePropertyChange("value", "wait", "scrape"); // Breakpoint.
        return "done";
    }
}


public class ScrapeService implements PropertyChangeListener {

    private final ScrapeController sc;

    public ScrapeService(ScrapeController sc) {
        this.sc = sc;
        sc.addPropertyChangeListener(this);
    }

    public void propertyChange(PropertyChangeEvent evt) {
        System.out.println("Name      = " + evt.getPropertyName()); // Breakpoint.
        System.out.println("Old Value = " + evt.getOldValue());
        System.out.println("New Value = " + evt.getNewValue());
    }
}

本項目基於Spring。 但我不認為問題與 Spring 有關。

這里有兩個斷點。 調試器在我觸發屬性更改的scrape方法中的第一個斷點處停止。 但是調試器無法在propertyChange方法中的斷點處停止。 所以調試消息沒有被打印出來。

我的猜測是ScrapeService從未實際實例化並添加到ScrapeControlleraddPropertyChangeListener方法中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM