Очевидное решение - изменить конструктор компонента для выполнения этого кода.Или добавьте его, если только класс в настоящее время имеет конструктор по умолчанию (без аргументов).
Конструктор должен быть конструктором без аргументов, чтобы соответствовать соглашениям JavaBeans.Но если инициализация зависит от значений некоторых свойств, вы всегда можете вместо этого поместить их в установщики;например:
public class MyBean {
private boolean initialized;
private String prop1, prop2;
/* Add getters here */
public void setProp1(String prop1) {
this.prop1 = prop1;
initWhenReady();
}
public void setProp2(String prop2) {
this.prop2 = prop2;
initWhenReady();
}
private void initWhenReady() {
if (prop1 != null && prop2 != null && !initialized) {
/* do initialization */
initialized = true;
}
}
}
Стоит отметить, что некоторые bean-инфраструктуры предоставляют лучший способ сделать это.Например, интерфейс Spring * InitializingBean
предоставляет метод обратного вызова, который вызывается (один раз), когда все экземпляры компонента были созданы и подключены.Это хорошее место для инициализации, которая зависит от нескольких свойств bean-компонента.