Мне было интересно, как я могу реализовать простой шаблон factory с Spring 3 аннотациями. Я видел в документации, что вы можете создать beans, которые вызывают класс factory и запускают метод factory. Мне было интересно, возможно ли это только с помощью аннотаций.
У меня есть контроллер, который в настоящее время вызывает
MyService myService = myServiceFactory.getMyService(test);
result = myService.checkStatus();
MyService - это интерфейс с одним методом, называемым checkStatus().
Мой класс factory выглядит следующим образом:
@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 имеет значение alwasy null. Я верю, что это потому, что я сам создаю объекты внутри factory, и автоустановка не происходит. Есть ли способ добавить аннотации, чтобы сделать эту работу правильно?
Спасибо