이 콘텐츠는 선택한 언어로 제공되지 않습니다.
12.14. Using @Initialize and @Uninitialize
Overview
In this example, assume we have a component that opens multiple connections to a database on initialization and then needs to release all those database resources when we close the Smooks instance.
public class MultiDataSourceAccessor
{
@ConfigParam
private File dataSourceConfig;
Map<String, Datasource> datasources = new HashMap<String, Datasource>();
@Initialize
public void createDataSources()
{
// Add DS creation code here....
// Read the dataSourceConfig property to read the DS configs...
}
@Uninitialize
public void releaseDataSources()
{
// Add DS release code here....
}
// etc...
}
When using the
@Initialize and @Uninitialize annotations above, the following should be noted:
- The
@Initializeand@Uninitializemethods must be public, zero-arg methods. - The
@ConfigParamproperties are all initialized before the first@Initializemethod is called. Therefore, you can use the@ConfigParamcomponent properties as input to the initialization process. - The
@Uninitializemethods are all called in response to a call to theSmooks.closemethod.