Factory object with a dependency on a bean
This looks like example code so I won't go into detail. If I had to choose between the two, I'd go with the first, because you should not be instantiating application contexts like this. There should be ONE application context and it should be created in main or ServletContextListener.contextInitialized or some such initialization method. In general service classes should be singleton scope (as opposed to prototype scope, not related to singleton pattern). Which means they should not be created using new in code.

@Component("finderFactory")
public class FinderFactory { // use standard java braces
    @Autowired private LocationCache locationCache;
    @Autowired private NorthFinderService northFinderService;
    @Autowired private SouthFinderService southFinderService; // use consistent names
    @Autowired private GeneralFinderService generalFinderService;

    public FinderService getFinderService(String location) {
        if (locationCache.isInNorth(location))
            return northFinderService;

        // you don't have to use `else` 
        // when `if` is followed by a `return`.
        if (locationCache.isInSouth(location))
            return southFinderService;

        return generalFinderService;
    }
}