#spring-boot
#spring-загрузка
Вопрос:
У меня есть этот компонентный класс, и если свойство accounting.generalServiceConfig.accountPageSize находится в application.properties, то запись журнала должна быть записана в файл журнала. Но с этим классом в основе это не работает. Если я добавлю аннотацию @Bean в метод printAccountPageSize и верну, например, new Object(), то это сработает. Есть ли возможность заставить это работать с классом так, как будто он находится внизу?
@Component
public class ConditionalPropertyChecker extends AbstractService {
protected final Logger logger = LoggerFactory.getLogger(getClass());
public ConditionalPropertyChecker() {
}
@ConditionalOnProperty(name = "accounting.generalServiceConfig.accountPageSize")
public void printAccountPageSize() {
logger
.info("the accountPageSize is set in application.properties");
}
}
Ответ №1:
@ConditionalOnProperty предназначен для классов @Configuration, создающих @Bean.
Вы можете сделать это:
@Component
public class ConditionalPropertyChecker extends AbstractService {
protected final Logger logger = LoggerFactory.getLogger(getClass());
public ConditionalPropertyChecker(@Value("${accounting.generalServiceConfig.accountPageSize}") Integer pageSize) {
if (pageSize) {
logger.info("the accountPageSize is set in application.properties");
}
}
}
Комментарии:
1. Это касается не только классов конфигурации. Совершенно нормально комментировать свой
@Component
класс с помощью@ConditionalOnProperty
.