The essence of the Observer Pattern is to "Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically." GoF. Observer pattern is a subset of publish/subscribepattern which allows a number of observer objects to see an event.
This pattern can be used in different situations, but in summary we can say that Observer pattern can be applied when an object should be able to notify messages to other objects, and you don't want these objects being tightly coupled. In my case I have used this pattern when an asynchronous event should be notified to one or more graphical component.
This pattern can be implemented using an adhoc solution or using java.util.Observer/Observableclasses. But my projects are always developed with Spring whether they are web or desktop applications. So in current post I will explain how I implement Observer pattern with Spring.
Event handling in Spring ApplicationContext is provided through ApplicationEvent class andApplicationListener interface. If a bean that implements ApplicationListener interface is deployed into the context, every time an ApplicationEvent is published to container, ApplicationListener receives it.