WalzoneInterview Prep
📞 Interviewing soon? Practice with a realistic AI mock phone interview — it calls you, then scores you. First 15 min FREE →

Spring Boot & Hibernate · Advanced · question 47 of 100

Can you explain how to create custom converters and formatters in Spring Boot for data binding and type conversion?

📕 Buy this interview preparation book: 100 Spring Boot & Hibernate questions & answers — PDF + EPUB for $5

In Spring Boot, data binding and type conversion are important aspects of the framework’s functionality. The framework provides a wide range of built-in converters and formatters for common data types, but you can also create your custom converters and formatters for your specific use case.

A converter is responsible for converting one type of object to another, while a formatter is responsible for converting between a string representation and a certain data type. In this answer, we’ll look at how to create custom converters and formatters in Spring Boot.

Custom Converters

To create a custom converter, you need to implement the Converter<S, T> interface, where S is the source type and T is the target type. You can then register your converter by adding it to the application context.

For example, let’s say you have a String field in your domain model that needs to be converted to a LocalDate object. You can create a custom converter like this:

    public class StringToLocalDateConverter implements Converter<String, LocalDate> {
        
        @Override
        public LocalDate convert(String source) {
            return LocalDate.parse(source, DateTimeFormatter.ISO\_LOCAL\_DATE);
        }
    }

In this example, we’re using the DateTimeFormatter class to parse the string into a LocalDate object.

Next, you need to register this converter with the application context. You can do this by adding the following code to your application configuration class:

    @Configuration
    public class MyConfig {
        
        @Bean
        public StringToLocalDateConverter stringToLocalDateConverter() {
            return new StringToLocalDateConverter();
        }
    }

Now, when Spring Boot encounters a String value that needs to be converted to a LocalDate, it will automatically use your custom converter.

Custom Formatters

To create a custom formatter, you need to implement the Formatter<T> interface, where T is the data type you want to format. You can then register your formatter by adding it to the application context.

For example, let’s say you have a LocalDate field in your domain model that needs to be formatted as a string using a custom format. You can create a custom formatter like this:

    public class LocalDateFormatter implements Formatter<LocalDate> {
        
        private final DateTimeFormatter formatter;
        
        public LocalDateFormatter(String pattern) {
            this.formatter = DateTimeFormatter.ofPattern(pattern);
        }
        
        @Override
        public LocalDate parse(String text, Locale locale) throws ParseException {
            return LocalDate.parse(text, formatter);
        }
        
        @Override
        public String print(LocalDate object, Locale locale) {
            return formatter.format(object);
        }
    }

In this example, we’re using the DateTimeFormatter class to format the LocalDate object as a string using the specified pattern.

Next, you need to register this formatter with the application context. You can do this by adding the following code to your application configuration class:

    @Configuration
    public class MyConfig implements WebMvcConfigurer {
        
        @Override
        public void addFormatters(FormatterRegistry registry) {
            registry.addFormatter(localDateFormatter());
        }
        
        @Bean
        public LocalDateFormatter localDateFormatter() {
            return new LocalDateFormatter("dd/MM/yyyy");
        }
    }

Now, when Spring Boot needs to format a LocalDate object as a string, it will automatically use your custom formatter.

In summary, creating custom converters and formatters in Spring Boot can help you handle data binding and type conversion more effectively, especially when dealing with custom data types or formats. By implementing the appropriate interface and registering your custom converter or formatter with the application context, you can extend Spring Boot’s built-in functionality and tailor it to your

Reading is step one. Saying it out loud is the interview. Our AI interviewer calls your phone and runs a realistic Spring Boot & Hibernate interview — then scores it.
📞 Practice Spring Boot & Hibernate — free 15 min
📕 Buy this interview preparation book: 100 Spring Boot & Hibernate questions & answers — PDF + EPUB for $5

All 100 Spring Boot & Hibernate questions · All topics