Я хотел бы обогатить объект дополнительными данными о загрузке из БД внутри @PostLoad
.
Как я могу получить доступ к управляемым компонентам Spring внутри метода @PostLoad
?
Я использую уродливое решение со статическим аксессором:
@Service
public class StaticApplicationContext implements ApplicationContextAware {
private static ApplicationContext ctx = null;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
ctx = applicationContext;
}
public static ApplicationContext getApplicationContext() {
return ctx;
}
}
@Entity
public class Car {
@Id
private Long id;
...
@Transient
private List<XType> details;
@PostLoad
private void onLoad() {
XTypeRepository repo = StaticApplicationContext.getCtx()
.getBean(XTypeRepository.class) ;
this.details = repo.findByCarId(this.id);
}
}
Соответствующая идея для доступа static
описана в разделе Доступ к компонентам Spring в статическом методе
Есть ли более идиоматическое решение/каркасный сахар?