add Spring observer pattern