Java Reference
In-Depth Information
The following list shows the steps through which the Spring IoC container manages the life cycle of
a bean (this list will be expanded as more features of the IoC container are introduced):
1.
Create the bean instance either by a constructor or by a factory method (a
static method or a method on a bean instance).
2.
Set the values and bean references to the bean properties.
3.
Call the initialization callback methods.
4.
The bean is ready to be used.
5.
When the container is shut down, call the destruction callback methods.
There are three ways that Spring can recognize your initialization and destruction callback
methods. First, your bean can implement the
InitializingBean
and
DisposableBean
life cycle interfaces
and implement the
afterPropertiesSet()
and
destroy()
methods for initialization and destruction.
Second, you can set the
init-method
and
destroy-method
attributes in the bean declaration and
specify the callback method names. In Spring, you can also annotate the initialization and destruction
callback methods with the life cycle annotations
@PostConstruct
and
@PreDestroy
, which are
defined in JSR-250: Common Annotations for the Java Platform. Then you can register a
CommonAnnotationBeanPostProcessor
instance in the IoC container to call these callback methods.
How It Works
To understand how the Spring IoC container manages the life cycle of your beans, let's consider an
example involving the checkout function. The following
Cashier
class can be used to check out the
products in a shopping cart. It records the time and the amount of each checkout in a text file.
package com.apress.springenterpriserecipes.shop;
...
public class Cashier {
private String name;
private String path;
private BufferedWriter writer;
public void setName(String name) {
this.name = name;
}
public void setPath(String path) {
this.path = path;
}
public void openFile() throws IOException {
File logFile = new File(path, name + ".txt");
writer = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(logFile, true)));
}
Search WWH ::
Custom Search