Purpose of pre-destroy is to perform cleanup operations. Its not to remove the bean. The bean is removed by the container when you call @Remove annotated method.Pre-destroy is just a callback listener method called before the bean is destroyed. @Remove is the method you call to indicate the container that you want the bean to be removed. So always the remove method will be called before pre destory method.