2017-01-12 4 views
0

Ich möchte alle Request-Mapping-Methode aufrufen (die @Resource-Injektion hat), bevor der Server startet. Wie kann ich das machen?Cache-Population in Spring-Controller

Der obige Code schlägt fehl und gibt mir IllegalStateException. Wie rufen Sie die Anforderungszuordnungsmethoden am besten auf, bevor der Server aktiv ist, und füllen Sie den Cache auf.

Antwort

0

Versuchen ApplicationListener in Verbindung mit ContextRefreshedEvent mit:

@Controller 
public class ServiceController implements ApplicationListener<ContextRefreshedEvent> { 

    private static final Map<String, String> cache = new HashMap<>(); 

    @Resource(name = "userService") 
    private IUserService userService; 

    @RequestMapping("/getAllCountry") 
    public String getAllCountry() { 
     return userService.getAllCountry(); 
    } 

    @RequestMapping("/getAllStates") 
    public String getAllStates() { 
     return userService.getStates(); 
    } 

    public void cacheData() { 
     cache.put("ALL_COUNTRY_DATA", getAllCountry()); 
     cache.put("ALL_STATE_DATA", getAllStates()); 
    } 

    @Override 
    public void onApplicationEvent(ContextRefreshedEvent event) { 
     cacheData(); 
    } 
}