Предположим, что я выполняю некоторую инициализацию в Spring singleton bean @PostConstruct
(упрощенный код):
@Service
class SomeService {
public Data someData; // not final, not volatile
public SomeService() { }
@PostConstruct
public void init() {
someData = new Data(....);
}
}
Должен ли я беспокоиться о видимости someData
для других beans и отмечать его volatile
?
(предположим, что я не могу инициализировать его в конструкторе)
И второй сценарий: что, если я перезаписать значение в @PostConstruct
(после, например, явной инициализации или инициализации в конструкторе), поэтому запись в @PostConstruct
не будет первой записи к этому атрибуту?