Реализуйте простой фабричный шаблон с аннотациями Spring 3.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Реализуйте простой фабричный шаблон с аннотациями Spring 3.

Сообщение Anonymous »

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

Подробнее здесь: https://stackoverflow.com/questions/639 ... nnotations
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»