Spring Configuration using Java (No XML)
In this tutorial, we are going to create a spring project and configure it by using the Java code. We will not use any XML code but only Java code. This project contains the following files.
-
BankApp.java
-
AppConfig.java
-
Accountant.java
-
Manager.java
-
Employee.java
-
pom.xml
And the following is a maven project structure created for the Spring application.
Spring Project-Structure:
Following is the project structure for the spring project:
The files created into the above project contains the following code. See the files below.
BankApp.java
This file contains the code to create an IOC container for our application. The AnnotationConfigApplicationContext class is used to create an object for application context.
package com.studytonight.community;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class BankApp {
public static void main(String[] args) {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
Manager employee = context.getBean(Manager.class);
employee.doWork();
context.close();
}
}
AppConfig.java
This is a configuration file in Java which is an alternate of the applicationContext.xml file that we created for the XML-based configuration example. The @Configuration
annotation indicates that this is not a simple class but a configuration class and the @ComponentScan
annotation is used to indicate the component location in our spring project.
package com.studytonight.community;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan("com.studytonight.community")
public class AppConfig {
}
Accountant.java
This is a component class that is marked using @Component
annotation. It implements the Employee
interface and overrides its method doWork()
.
package com.studytonight.community;
import org.springframework.stereotype.Component;
@Component
public class Accountant implements Employee{
public void doWork() {
System.out.println("Auditing Accounts...");
}
}
Manager.java
This is another component class that is marked using the @Component
annotation and implements the Employee
interface.
package com.studytonight.community;
import org.springframework.stereotype.Component;
@Component
public class Manager implements Employee{
public void doWork() {
System.out.println("Manage the branch office");
}
}
Employee.java
This is an interface Employee
that contains a doWork()
abstract method. Each class that implements this interface will have to override the doWork()
method.
package com.studytonight.community;
public interface Employee {
void doWork();
}
pom.xml
This file contains all the dependencies of this project such as spring jars, servlet jars, etc. Put these dependencies into your project to run the application.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.studytonight</groupId>
<artifactId>springApp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>
</dependencies>
<properties>
<spring.version>5.2.8.RELEASE</spring.version>
</properties>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
Run the Application:
After successfully completing the project and adding the dependencies run the application and you will get the output as below.
Manage the branch office