spring observer pattern impl