javaspringspring-bootspring-mvcresources

Message Source with Spring Boot


I am trying to use MessageSource with my Spring application for message constant. I tried everything but my message is not shown in Swagger.

/src/main/resources/message_en.properties

This is my message in constant file

ADMIN_USER_NOT_FOUND=Admin user not found

I also put this in application properties file

spring.messages.basename=message
spring.messages.encoding=UTF-8

Now

@Component
public class MessageUtil {

    private final MessageSource messageSource;

    public MessageUtil(MessageSource messageSource) {
        this.messageSource = messageSource;
    }

    public String getMessage(String message) {
        return messageSource.getMessage(message, null, LocaleContextHolder.getLocale());
    }

    public String getMessageWithArgs(String message, Object[] args) {
        return messageSource.getMessage(
                message, args, LocaleContextHolder.getLocale()
        );
    }
}

This is how I define message utils and I am using like this

@Autowired
MessageUtil messageUtil
throw new NotFoundException(messageUtil.getMessage("ADMIN_USER_NOT_FOUND"));

But I am getting below error:

org.springframework.context.NoSuchMessageException: No message found under code 'ADMIN_USER_NOT_FOUND' for locale 'en_US'.

Why is this happening?


Solution

  • use file name 'message.properties' instead of 'message_en.properties'
    because the message source default considers the 'message.properties' file as English language message
    Your file should be named: