- 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>
- 軟件項目估算
- ASP.NET Web API:Build RESTful web applications and services on the .NET framework
- ThinkPHP 5實戰
- Java應用開發與實踐
- Android 7編程入門經典:使用Android Studio 2(第4版)
- Access 2010數據庫基礎與應用項目式教程(第3版)
- Python機器學習經典實例
- Java:High-Performance Apps with Java 9
- 大學計算機基礎實驗指導
- Angular應用程序開發指南
- Serverless Web Applications with React and Firebase
- Machine Learning for Developers
- PHP動態網站開發實踐教程
- JBoss AS 7 Development
- Clojure Data Structures and Algorithms Cookbook