As we saw in Chapter 4, Spring provides three ways of configuring the container: XML, annotations, and last but not the least, Java configuration. The fact is, both XML and annotations have valid pros and cons. I am not saying that Java configuration is the answer to all the cons of both XML and annotations. I have given detailed pros and cons of each configuration styles in Chapter 4.
Configuration Styles – Pros and Cons
Just to re-state, pros of XML configuration can be:
- Separation of concerns
- Configurations kept outside the classes
- Configuration easy to view
- Configuration changeable without recompiling, etc.
Cons of XML style of configuration are:
- Since XML is all string based, when used in the Java context, all these have to be converted to appropriate Java types, and this conversion could be painful and time consuming for the Java Virtual Machine.
- Typos are very difficult to debug
- Not type safe because of these strings
Pros of annotation-based configuration are:
- Being Java it’s type safe, Spring does the configuring of its container in a speedy way
- Indirect advantage being, it self-documents the class (open the class and you can see what is being injected by Spring)
Cons of annotation-based configuration are:
- Cluttering of POJO’s
- Any change requires change of application code
- Any change requires recompilation and deployment
Pros of Java configuration are:
- Being Java it’s type-safe, Spring does the configuring of its container in a speedy way
- Clean separation of concerns
- Single resource representing the application configuration
- For systems which needs change constantly, configuration can change without changing the application code which is key for such systems.
Cons of Java configuration are:
- Any change requires recompilation and deployment
Just by looking at the pros of Java configuration style, you can see that it includes the advantages provided by both XML and annotation type configuration. The only significant con to Java configuration is the requirement to recompile and redeploy if a change in configuration occurs.
In sum, Java is one of the best configuration styles that can be used in your application. However, we cannot just ignore other configuration styles. In this Chapter we will explore the different ways to simplify configuration so that we can mix and match various configuration styles in your application and make use of the advantages provided by all the various styles available with the Spring framework.
Bean definition inheritance
If multiple beans in your XML configuration scheme have certain features in common, you can use Java to create a parent bean, allowing your child bean to override some values or to add other values as needed. This way of using parent and child bean definitions can save a lot of time in addition to reducing your bean definition complexities. This can be called as a sort of templating pattern in Java.
Take an example class Employee as shown in the following example. We will be using this as the base class to explain the bean inheritance in detail.
[java]public class Employee{
private String name;
private String address;
private String designation;
//….
}[/java]
Inheritance with abstract
In the following example, parentEmployee bean cannot be instantiated as the class created is abstract in nature. This way you can make parentEmployee as a template and not allow others to instantiate it. If you try to instantiate parentEmployee bean you will get org.springframework.beans.factory.BeanIsAbstractException exception.
[xml]<bean id="parentEmployee" class="com.mybook.sample.Employee" abstract="true">
<property name="address" value="Dubai"/>
<property name="designation" value="STE"/>
</bean>
<bean id="childEmployee" parent="parentEmployee">
<property name="name" value="john"/>
<!– Here we are overriding the parent property namely designation–>
<property name="designation" value="SSE"/>
</bean>[/xml]
Page Visitors: 3693

Tomcy John

Latest posts by Tomcy John (see all)
- A Guide to Continuous Improvement for Architects - February 2, 2023
- Cloud-first Architecture Strategy - January 26, 2023
- Architecture Strategy and how to create One - January 24, 2023
Hi Tomcy,
All looks great and thanks for your time and efforts.
One small suggestion if you could provide single page view for all the Spring tutorials would be great. May print option as well.
Thanks & regards,
AA
Will surely look into making that option available.