Configuring Spring 5 Applications

Traditionally Spring applications were configured using only xml configurations. Later annotations such as @Component came and complemented the xml configuration. However later XML configurations were completely replaced by Java configurations that use annotations such as @Bean.

Xml configuration

In xml configuration, you use xml to configure beans.

We can load an xml configuration file from a standalone application as:

ApplicationContext context= new ClassPathXmlApplicationContext("applicationContext.xml");


Though annotations and Java configuration are the preferred approaches, xml configurations might be handy in cases such as:

  • We do not have access to the classes to write access annotations. 

  • Some libraries (or some versions) might not support Java configurations completely.

  • Some features might be significantly more difficult to do in Java configuration than on XML due to various shortcuts and features available with XML configurations. 


Xml configuration is not supported much these days, but are supported for backward compatibility. You can find examples here.



Annotations can be used along with xml configuration or java configuration. When using annotations, @Component is the most important annotation that specifies that the class needs to be considered as a bean. You also needs to specify the paths on which Spring should look for such components either using @ComponentScan annotation or the <context:component-scan tag in the xml configuration file. 

There are also other component annotations that gives more clarity about the purpose of the bean. You can read about in below link or wait until it is discussed as part of this series of notes.


Java configuration

In Java configuration, you can have a java class file annotated with @Configuration to create and manage beans. 

We can load a Java configuration file from a standalone application as:

ApplicationContext context = new AnnotationConfigApplicationContext(DemoConfig.class);


Inside a Java configuration file, you can import other Java configuration files using @Import and can even import other xml based configuration files using @ImportResource. 


Java configuration is the most preferred approach in newer projects as:

  • You can keep your configurations at one centralized place (when compared to a complete annotations approach)

  • We can make use of Java compiler to make sure that we are doing right thing (compared to xml approach)

  • We can use any of the Java language features to write any kind of (even complex) bean configurations (compared to xml approach)

Quick Notes Finder Tags

Activities (1) advanced java (1) agile (3) App Servers (6) archived notes (2) Arrays (1) Best Practices (12) Best Practices (Design) (3) Best Practices (Java) (7) Best Practices (Java EE) (1) BigData (3) Chars & Encodings (6) coding problems (2) Collections (15) contests (3) Core Java (All) (55) course plan (2) Database (12) Design patterns (8) dev tools (3) downloads (2) eclipse (9) Essentials (1) examples (14) Exception (1) Exceptions (4) Exercise (1) exercises (6) Getting Started (18) Groovy (2) hadoop (4) hibernate (77) hibernate interview questions (6) History (1) Hot book (5) http monitoring (2) Inheritance (4) intellij (1) java 8 notes (4) Java 9 (1) Java Concepts (7) Java Core (9) java ee exercises (1) java ee interview questions (2) Java Elements (16) Java Environment (1) Java Features (4) java interview points (4) java interview questions (4) javajee initiatives (1) javajee thoughts (3) Java Performance (6) Java Programmer 1 (11) Java Programmer 2 (7) Javascript Frameworks (1) Java SE Professional (1) JPA 1 - Module (6) JPA 1 - Modules (1) JSP (1) Legacy Java (1) linked list (3) maven (1) Multithreading (16) NFR (1) No SQL (1) Object Oriented (9) OCPJP (4) OCPWCD (1) OOAD (3) Operators (4) Overloading (2) Overriding (2) Overviews (1) policies (1) programming (1) Quartz Scheduler (1) Quizzes (17) RabbitMQ (1) references (2) restful web service (3) Searching (1) security (10) Servlets (8) Servlets and JSP (31) Site Usage Guidelines (1) Sorting (1) source code management (1) spring (4) spring boot (3) Spring Examples (1) Spring Features (1) spring jpa (1) Stack (1) Streams & IO (3) Strings (11) SW Developer Tools (2) testing (1) troubleshooting (1) user interface (1) vxml (8) web services (1) Web Technologies (1) Web Technology Books (1) youtube (1)