Реализовать простой заводской шаблон с аннотациями Spring 3

Мне было интересно, как я могу реализовать простой фабричный шаблон с аннотациями Spring 3. Я видел в документации, что вы можете создавать bean-компоненты, которые вызывают фабричный класс и запускают фабричный метод. Мне было интересно, возможно ли это с использованием только аннотаций.

У меня есть контроллер, который в настоящее время вызывает

MyService myService = myServiceFactory.getMyService(test);
result = myService.checkStatus();

MyService - это интерфейс с одним методом, называемым checkStatus ().

Мой фабричный класс выглядит так:

@Component
public class MyServiceFactory {

    public static MyService getMyService(String service) {
        MyService myService;

        service = service.toLowerCase();

        if (service.equals("one")) {
            myService = new MyServiceOne();
        } else if (service.equals("two")) {
            myService = new MyServiceTwo();
        } else if (service.equals("three")) {
            myService = new MyServiceThree();
        } else {
            myService = new MyServiceDefault();
        }

        return myService;
    }
}

MyServiceOne класс выглядит так:

@Autowired
private LocationService locationService;

public boolean checkStatus() {
      //do stuff
}

Когда я запускаю в этом коде переменная locationService всегда имеет значение null. Я верю, что это потому, что я сам создаю объекты внутри фабрики, а автомонтаж не выполняется. Есть ли способ добавить аннотации, чтобы все работало правильно?

Спасибо

42
задан blong824 17 June 2011 в 19:27
поделиться