Spring Boot — Exception Handling | Code Factory

<?xml version="1.0" encoding="UTF-8"?>
<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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.codeFactory</groupId>
<artifactId>spring-boot-exception-handling</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-boot-exception-handling</name>
<description>Demo project for Spring Boot Exception Handling</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
package com.codeFactory;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @author code.factory
*
*/
@SpringBootApplication
public class SpringBootExceptionHandlingApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootExceptionHandlingApplication.class, args);
}
}
package com.codeFactory.bean;import java.util.HashMap;
import java.util.Map;
/**
* @author code.factory
*
*/
public class Employee {
private int id;
private String name;
private static Map<Integer, Employee> employeeList = new HashMap<Integer, Employee>();
public Employee(int id, String name) {
this.id = id;
this.name = name;
}
public static Map<Integer, Employee> getEmployeesList() {
employeeList.put(1, new Employee(1, "Emp1"));
employeeList.put(2, new Employee(2, "Emp2"));
employeeList.put(3, new Employee(3, "Emp3"));
return employeeList;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
}
package com.codeFactory.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import com.codeFactory.bean.Employee;
import com.codeFactory.exception.EmployeeNotFound;
/**
* @author code.factory
*
*/
@RestController
public class EmployeeController {
@GetMapping("getEmployee/{id}")
public Employee getEmployee(@PathVariable("id") int id) {
if(Employee.getEmployeesList().containsKey(id)) {
return Employee.getEmployeesList().get(id);
}
throw new EmployeeNotFound("Employee Not Found");
}
}
package com.codeFactory.exception;import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
/**
* @author code.factory
*
*/
@ControllerAdvice
public class EmployeeExceptionController {
@ExceptionHandler(value = EmployeeNotFound.class)
public ResponseEntity<Object> exception(EmployeeNotFound e) {
return new ResponseEntity<>(e.getMessage(), HttpStatus.NOT_FOUND);
}
}
package com.codeFactory.exception;/**
* @author code.factory
*
*/
public class EmployeeNotFound extends RuntimeException {
public EmployeeNotFound(String message) {
super(message);
}
}

--

--

--

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

WCAG: How to implement web accessibility & establish an organizational-adaptive strategy

illustration of users stroll on an open laptop

When only quality is not enough.

On Code Review

Optimizing Sprint Planning with the Knapsack Problem and Dynamic Programming

On Spark Performance and partitioning strategies

Webinar Series 101 : Life in the Times of Coronavirus.

How would you take a technical concept and teach it to a friend or peer that has never heard of it?

Parallels For Mac South Africa

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Code Factory

Code Factory

More from Medium

Is Java dead yet? Key figures about Java usage in 2022

How To Send Multiple SMS With Twilio in Spring Boot

Java Garbage Collector

Chapter 6 — Using the Java Library