To understand templates in spring framework, consider a database connection class. This class requires certain parameters viz.
- Database name,
- Server IP address,
- Username and
- Password.
As these properties must be present in all beans of database connection class, hence we can specify these properties with default values in a spring template as follows.
<bean id="sqlTemplate" abstract="true"> <property name="database" value="Oracle"/> <property name="server" value="127.0.0.1"/> <property name="username" value="scott"/> <property name="password" value="tiger"/> </bean>
Note that in template we specify abstract="true" and do not provide a class. Now the beans of ORACLEDBConnection class can use this as template by specifying parent attribute value as the bean-id sqlTemplate.
<bean id="dbConnection" class="org.techmight.ORACLEDBConnection" parent="sqlTemplate"/>
Example
spring-config.xml
ORACLEDBConnection.java
spring-config.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="sqlTemplate" abstract="true"> <property name="database" value="Oracle"/> <property name="server" value="127.0.0.1"/> <property name="username" value="scott"/> <property name="password" value="tiger"/> </bean> <bean id="dbConnection" class="org.techmight.ORACLEDBConnection" parent="sqlTemplate"/> <bean id="dbConnection2" class="org.techmight.ORACLEDBConnection" parent="sqlTemplate"> <property name="server" value="112.36.12.100"/> <property name="username" value="techmight"/> <property name="password" value="passwd@123"/> </bean> </beans>
ORACLEDBConnection.java
package org.techmight; public class ORACLEDBConnection { private String database; private String server; private String username; private String password; public String getDatabase() { return database; } public void setDatabase(String database) { this.database = database; } public String getServer() { return server; } public void setServer(String server) { this.server = server; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
MainApp.java
Output
Default Database Connection params -
Database name: Oracle
Server IP : 127.0.0.1
Username: scott
Password: tiger
TechMight Database Connection params -
Database name: Oracle
Server IP : 112.36.12.100
Username: techmight
Password: passwd@123
package org.techmight; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class MainApp { public static void main(String[] args) { AbstractApplicationContext context = new ClassPathXmlApplicationContext( "spring-config.xml"); ORACLEDBConnection db = null; db = (ORACLEDBConnection) context.getBean("dbConnection"); System.out.println("Default Database Connection params - "); System.out.println("Database name: " + db.getDatabase()); System.out.println("Server IP : " + db.getServer()); System.out.println("Username: " + db.getUsername()); System.out.println("Password: " + db.getPassword()); System.out.println("\nTechMight Database Connection params - "); db = (ORACLEDBConnection) context.getBean("dbConnection2"); System.out.println("Database name: " + db.getDatabase()); System.out.println("Server IP : " + db.getServer()); System.out.println("Username: " + db.getUsername()); System.out.println("Password: " + db.getPassword()); } }
Output
Default Database Connection params -
Database name: Oracle
Server IP : 127.0.0.1
Username: scott
Password: tiger
TechMight Database Connection params -
Database name: Oracle
Server IP : 112.36.12.100
Username: techmight
Password: passwd@123