- Spring Essentials
- Shameer Kunjumohamed Hamidreza Sattari
- 224字
- 2021-07-16 13:05:47
Hooking to bean life cycles
Often, in enterprise application development, developers will want to plug in some extra functionality to be executed just after the construction and before the destruction of a business service. Spring provides multiple methods for interacting with such stages in the life cycle of a bean.
Implementing InitializingBean and DisposableBean
The Spring IoC container invokes the callback methods afterPropertiesSet()
of org.springframework.beans.factory.InitializingBean
and destroy()
of org.springframework.beans.factory.DisposableBean
on any Spring bean and implements them:
public class UserServiceImpl implements UserService, InitializingBean, DisposableBean { ... @Override public void afterPropertiesSet() throws Exception { logger.debug(this + ".afterPropertiesSet() invoked!"); // Your initialization code goes here.. } @Override public void destroy() throws Exception { logger.debug(this + ".destroy() invoked!"); // Your cleanup code goes here.. } ... }
Annotating @PostConstruct and @PreDestroy on @Components
Spring supports JSR 250 @PostConstruct
and @PreDestroy
annotations on any Spring bean in an annotation-supported environment, as shown here. Spring encourages this approach over implementing Spring-specific interfaces, as given in the previous section:
@Service public class AnnotatedTaskService implements TaskService { ... @PostConstruct public void init() { logger.debug(this.getClass().getName() + " started!"); } @PreDestroy public void cleanup() { logger.debug(this.getClass().getName() + " is about to destroy!"); } ... }
The init-method and destroy-method attributes of <bean/>
If you are using XML-only bean configuration metadata, then your best option is to declare init-method
and destroy-method
attributes on your <bean/>
tags:
<bean id="xmlTaskService" class="com...XmlDefinedTaskService" init-method="init" destroy-method="cleanup"> ... </bean>
- C#高級編程(第10版) C# 6 & .NET Core 1.0 (.NET開發經典名著)
- OpenCV for Secret Agents
- Animate CC二維動畫設計與制作(微課版)
- Building Mapping Applications with QGIS
- Effective Python Penetration Testing
- Ext JS 4 Web Application Development Cookbook
- Mastering JavaScript Design Patterns(Second Edition)
- Xamarin Blueprints
- Google Maps JavaScript API Cookbook
- Learning Java by Building Android Games
- Instant JRebel
- 面向WebAssembly編程:應用開發方法與實踐
- Java編程方法論:響應式RxJava與代碼設計實戰
- 數據結構和算法(Python和C++語言描述)
- Building Modern Networks