Это невозможно с вашей текущей конфигурацией, потому что filter
- это просто singleton
бин, созданный только один раз при запуске, потянув, что ваш currentDate
для инъекции также только один раз.
Вы можете попробоватьдобавьте <aop:scoped-proxy/>
в ваше определение currentDate
бина, хотя: https://docs.spring.io/spring/docs/5.1.3.RELEASE/spring-framework-reference/core.html#beans-factory-scopes-other-injection,, но я бы посоветовал добавить BeanFactorty
в ваш filter
и вызывать getBean("currentDate", Date.class)
каждый раз, когда вам нужен новый экземпляр этого прототипа.
ОБНОВЛЕНИЕ
Вы вводите BeanFactory
в свой filter
вместо этого currentDate
боба.И затем, когда вызывается логика фильтра, вы делаете Date currentDate = this.beanFactory.getBean("currentDate", Date.class);
.
UPDATE2
Вот то, что я думаю, должно работать для вас:
public class DynamicRegexPatternFilter extends AbstractFileListFilter<File> {
@Autowired
private BeanFactory beanFactory;
@Override
public boolean accept(File file) {
return Pattern.compile(this.beanFactory.getBean("currentDate", String.class) + ".(xls|xlsx)")
.matcher(file.getName())
.matches();
}
}