#java #spring-boot #postconstruct
#java #spring-boot #postconstruct
Вопрос:
В Spring Boot у меня есть класс, который я хочу создать, передав параметры в конструктор во время выполнения. Я могу это сделать, но все свойства AutoWire равны нулю, и PostConstruct не вызывается.
Constructor<KafkaController> constructorsA[] = (Constructor<KafkaController>[]) KafkaController.class.getConstructors();
KafkaController kafkaObject = constructorsA[0].newInstance(new Object[] { "1", "2" });
Это класс, о котором идет речь
@Component
public class KafkaController {
private KafkaConsumer<String, String> consumer;
@Autowired
private Util sentinelUtil;
final String subscriberID;
final String interactionID;
@Autowired
public KafkaController(@Value("") String subscriberID, @Value("") String interactionID) {
this.subscriberID = subscriberID;
this.interactionID = interactionID;
}
@PostConstruct
private void initKafka() {
}
}
Должен ли я создавать экземпляр класса, используя другой метод?
Комментарии:
1. Вы создаете его вне контекста spring, spring не знает ни о каком классе, который он не создает. Чего именно вы пытаетесь достичь? Существует несколько методов создания различных экземпляров компонентов на основе внешних свойств.
2. Я хочу передать два параметра классу, который откроет очередь Kafka и вернет данные на основе переданных данных.