Это вызывает бурные дебаты, и я хотел бы знать, есть ли какие-либо проблемы с этим подходом.
У меня есть класс, который не содержит ничего, кроме статических строк:
public class EventConstants {
public static ID = "1";
public static DOMAIN = "local";
public static final DEVICE = "PC";
public static final SOURCE = "local";
}
Теперь ID и DOMAIN не являются final
, потому что я решил переопределить их, учитывая Spring ConfigurationProperties
. Итак ...
public CustomEventConstanstants extends EventConstants {
@Autowired
private PropertyMapper mapper;
@PostConstruct
public void init() {
ID = (mapper.ID != null) ? mapper.ID : EventConstants.ID
DOMAIN = (mapper.DOMAIN != null) ? mapper.DOMAIN : EventConstants.DOMAIN
}
}
Идея этого класса заключается в том, что пользователь может просто вызвать один класс и использовать соответствующую константу, настроенную свойством Spring, или нет.
Пример:
object.methodA(CustomEventConstants.ID) // This will return the configured ID or what's in EventConstants
object.methodB(CustomEventConstants.DEVICE)
Аргумент, который я привел, заключается в том, что другие считают, что он не подходит для тестирования, поскольку его нельзя надлежащим образом исключить.