Eu quero fazer applicationContext dentro do método do agendador. é possível ? )
<task:annotation-driven executor="executor" scheduler="scheduler"/>
<task:executor id="executor" pool-size="5"/>
<task:scheduler id="scheduler" pool-size="10"/>
E minha classe:
@Scheduled(fixedDelay=100)
public void doSomething() {
}
Como eu adiciono isso? :
private ApplicationContext applicationContext;
@Override
public void setApplicationContext(final ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
Que use o código:
JDBCEntityDAO obj = (JDBCEntityDAO) applicationContext.getBean("taEntityDAO");
Ajuda por favor
Respostas:
3 para resposta № 1Basta adicionar @Autowired ou qualquer outra dependênciaAnotação de injeção para suas classes de trabalho (aquelas com métodos anotados @Scheduled -). Se você precisar de uma referência ao ApplicationContext, faça seu trabalho implementar a interface ApplicationContextAware. Isso funcionará com o agendador nativo Spring. Se você usa Quartz, você terá que fazer um pouco mais de trabalho, veja aqui injetar referência de feijão em um trabalho de quartzo na primavera? . A propósito, você pode usar a anotação @Resourse para injetar beans pelo nome.