Мне было интересно, как я могу реализовать простой фабричный шаблон с аннотациями 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. Я верю, что это потому, что я сам создаю объекты внутри фабрики, а автомонтаж не выполняется. Есть ли способ добавить аннотации, чтобы все работало правильно?
Спасибо