To read messages from messages.proprties you need locale. You can get locale like Locale.ITALY or you can get it from request object request.getLocale(). Please read this link to get the request object in service.

Suppose following is entry in messages.properties

user.admin=Hello Admin

to get this message in service first inject the MessageSource bean in your service

def messageSource

and use following code

messageSource.getMessage('user.admin', null, request.getLocale())

you can give default message as well like

messageSource.getMessage('user.admin.messageNotExist', null, "Hi Admin", request.getLocale())

If following is the entry in messages.properties

user.welcome=Hello {0}

then you can pass arguments like

Object[] args = ["Manish Bharti"]
messageSource.getMessage('user.welcome', args, request.getLocale())

messageSource.getMessage('user.welcome.messageNotExist', args, "Hi {0}", request.getLocale())

Note:- grails treat [“testString”] as an ArrayList by default and hence we can not use it directly in getMessage like

messageSource.getMessage('user.welcome', ["testString"], request.getLocale())