|
BeanDefinition
The BeanDefinition contains all the information required by the
BeanFactory to instantiate the bean. This includes any
dependencies the bean may have on other beans and how the bean
needs to be configured in the container. When a request is made
for a bean, the BeanFactory loads the corresponding
BeanDefinition and instantiates the bean. The BeanDefinition has
information on how the bean would be instantiated (Singleton or
prototype) and callback methods defined in the Lifecycle
section.
Lifecycle of a Bean
After the bean is initialized the BeanFactory can use callback
methods to change the behavior of the bean in the BeanFactory.
One of the callback methods is the init-method. The
InitializingBean interface of the factory package gives the
ability to do initialization work after properties are set up
for a bean in the BeanFactory. The afterPropertiesSet () method
in the InitializingBean interface allows the user to check if
all the properties are set properly or if some operation has to
be done after the properties have been set. All Bean classes
that need to use this callback method need to implement the
InitializingBean interface and implement the afterPropertiesSet
() method. If the initialization work is minimal the user has
the flexibility to designate a method within the bean, which
will be invoked after bean properties have been set. The
designated method, which would do the initialization, can be
then be specified in the init-method attribute of the bean.
Designating the init-method attribute can help to avoid
implementing the InitializingBean interface.
In a similar fashion a DisposableBean interface is provided to
do cleanup operations after a bean is destroyed. The bean has a
destroy-method attribute that can used to designate a method
within the bean, which will do the clean up work when the
BeanFactory destroys the bean.
Other Features:
Spring can automatically resolve the dependent beans with
the help of the BeanFactory. This facility can reduce the need
to specify properties or constructor arguments.
Spring can check dependencies on a bean. It can check for
values that should be set when a bean is initialized. If the
check is not done the BeanFactory will set the default value.
This behavior is not mandatory and can be turned on when
required.
Spring can also manage multiple resource files for you.
Sample
Lets go through a sample to illustrate a few of the important
ideas outlined above. Shown below is a snippet of XML that
defines some BeanDefinitions of an actual bean.
<bean id = helloWorldSample´
class=com.helloworld.samples.HelloWorld
depends-on = boostrapClassId>
<property name=myString>
My famous Hello World Program</property>
<property name=dependentClassId>
<ref bean = firstDependentClass/>
</property>
</bean>
<bean id = firstDependentClass
class = com.helloworld.dependent.FirstDependentClass
destroy-method=cleanupMethod>
<property name=dependentString>
My famous Hello World Program needs me</property>
<bean>
<bean id = bootstrapClassId
class = com.helloworld.config.BootStrapClass
init-method = loadPropertiesFromFile>
The sample above shows a BeanDefinition for a HelloWorld Class,
which depends upon the BootStrapClass class. The property
‘myString’ would translate into a field into the bean with a
default value specified within it. Since the BeanFactory knows
that this bean requires the class FirstDependentClass, it would
instantiate that class before it sets the reference for that
class in the main bean. The property "dependentClassId" would
also become a field in the bean with a reference to the
FirstDependentClass. The loadProertiesFromFile method which is
specified as a init method will be invoked after properties have
been set to the BootStrapClass bean.
Application Context
The ApplicationContext provides a framework type of API to
Spring. The framework allows the user to use a ContextLoader to
load beans. The ContextLoader does the job of the BeanFactory.
The ApplicationContext provides all the features offered by
BeanFactory and allows the user to add some additional features.
Some of the features offered by the ApplicationContext are
MessageSources, Resource management and Event Propagation.
MessageSource offers an i18n type messaging facility. Event
Propagation allows Spring to have an event handling mechanism.
The Event handling is done via the ApplicationEvent Class and
the ApplicationListener interface. Every bean that’s wants to be
notified of any events would implement the ApplicationListener
Interface. Whenever an ApplicationEvent takes place the
ApplicationContext knows about it. The ApplicationContext would
notify the beans that are listening to this event.
New on the Java Boutique:
New Review:
Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling
API boasts simplicity, ease-of-integration, a well-rounded feature
set, and it's free!
New Applet:
Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA
sequences into three useful formats.
Elsewhere on internet.com:
WebDeveloper Java
Lots of Java information on webdeveloper.com
WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.
ScriptSearch Java
Hundreds of free Java code files to download.
jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.
|