How to write this method with similar checks and multiple returns more elegantly?
I think it's a personal thing, but I prefer == null checks with early exits, because that way you have all exception paths at the beginning and the normal execution path is less indented.
For your string concatenation you could make a ternary if and have one return statement less.

private String get(Details details, Value value){
    Type type = Type.getEvent(details.getType());
    if(type == null) {
      return StringUtils.contains(details.getSpin(), SPIN) ? BACKUP : DEFAULT_VAL;
    }

    if("SAMPLE".equals(type.typeDesc())) {
        String prefix = SPIN.equals(details.getSpin()) ? BACKUP : DEFAULT_VAL;
        return prefix + SAMPLE + value.getId();
    }
    return value.getRoute();
}


Now looking at this, you check the spin for equals and contains. Is this intentional? If not you could further reduce the code by pulling the prefix part up like this:

private String get(Details details, Value value){
    String prefix = SPIN.equals(details.getSpin()) ? BACKUP : DEFAULT_VAL;

    Type type = Type.getEvent(details.getType());
    if(type == null) {
      return prefix;
    }

    if("SAMPLE".equals(type.typeDesc())) {

        return prefix + SAMPLE + value.getId();
    }
    return value.getRoute();
}


In general you should use StringBuilder for string concatenation.