powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / spring Factory config
12 сообщений из 12, страница 1 из 1
spring Factory config
    #38836759
bob8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе время суток!
...
Рейтинг: 0 / 0
spring Factory config
    #38836764
bob8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bob8Доброе время суток!
Такой вот вопросик:
...
Рейтинг: 0 / 0
spring Factory config
    #38836767
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bob8Доброе время суток!
Привет
...
Рейтинг: 0 / 0
spring Factory config
    #38836768
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bob8Такой вот вопросик:
Добро пожаловать в наш чатик.
...
Рейтинг: 0 / 0
spring Factory config
    #38836790
bob8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня есть фабрика
public class TestFactory {

private Map<Type, Provider> providers;

public Provider getStorageProvider(Type providerType) {
return providers.get(storageProviderType);
}

public void setProviders(Map<Type, Provider> providers) {
this.providers = providers;
}
}
которая будет поставлять
имплементации:

interface Provider {
void method();
}

@Service
public class ProviderA implements Provider {
@Override
public void method() {
System.out.println("ProviderA");
}
}

@Service
public class ProviderB implements Provider {
@Override
public void method() {
System.out.println("ProviderA");
}
}
как описать конфиг этой фабрики?:
@Configuration
public class MyConfig {

@Bean
public Provider providerA(){ return new ProviderA();}
@Bean
public Provider providerB(){ return new ProviderA();}

@Bean
public TestFactory testFactory(){
TestFactory factory = new TestFactory();
Map<Type, Provider> providers = new HashMap<>();
providers.put(Type.A, ?????);
providers.put(Type.B, ?????);
factory.set(providers);
return factory;
}
}
Type - это enum;
Вопрос как все это сконфигурировать???:)
...
Рейтинг: 0 / 0
spring Factory config
    #38836817
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bob8У меня есть фабрика
...
Вопрос как все это сконфигурировать???:)

Я не понял зачем вы делаете, но вы явно делаете не то.

Собственная реализация паттерна фабрика, для приложений на Spring не обычно не нужна.
Фабрикой выступает как раз сам Spring.

А так в методе testFactory
просто вызывать соответствующие "бины"
...
Рейтинг: 0 / 0
spring Factory config
    #38836835
bob8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mad_nazgulbob8У меня есть фабрика
...
Вопрос как все это сконфигурировать???:)

Я не понял зачем вы делаете, но вы явно делаете не то.

Собственная реализация паттерна фабрика, для приложений на Spring не обычно не нужна.
Фабрикой выступает как раз сам Spring.

А так в методе testFactory
просто вызывать соответствующие "бины"

я хочу получить след:
@Controller
public class MyController{

@Autowired
private TestFactory testFactory;

pablic void method(){

Provider provider = testFactory.get(Type.A)

фабрика должна вернуть нужный экземпляр

}

}
...
Рейтинг: 0 / 0
spring Factory config
    #38836838
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
spring Factory config
    #38836875
bob8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczbob8,

https://www.google.com/search?q=spring bean qualifier

вы предлагаете так реализовать:?

@Controller
public class MyController{

@Autowired
@Qualifier("providerA")
public Provider providerA;

@Autowired
@Qualifier("providerB")
public Provider providerA;
}

если да - то я хотел работать через свою фабрику

@Autowired
private TestFactory testFactory;

и фабрика возвращала мне нужные экземпляр Provider, по значению enuma Provider provider = testFactory.get(Type.A);
...
Рейтинг: 0 / 0
spring Factory config
    #38836945
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bob8я хочу получить след:
@Controller
public class MyController{

@Autowired
private TestFactory testFactory;

pablic void method(){

Provider provider = testFactory.get(Type.A)

фабрика должна вернуть нужный экземпляр

}

}

У вас уже все есть просто сделайте так. :-)
Код: java
1.
2.
3.
4.
5.
6.
7.
@Bean
public TestFactory testFactory(){
   ...
   providers.put(Type.A, providerA());
   providers.put(Type.B, providerB());
   ...
}
...
Рейтинг: 0 / 0
spring Factory config
    #38837019
bob8
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mad_nazgulbob8я хочу получить след:
@Controller
public class MyController{

@Autowired
private TestFactory testFactory;

pablic void method(){

Provider provider = testFactory.get(Type.A)

фабрика должна вернуть нужный экземпляр

}

}

У вас уже все есть просто сделайте так. :-)
Код: java
1.
2.
3.
4.
5.
6.
7.
@Bean
public TestFactory testFactory(){
   ...
   providers.put(Type.A, providerA());
   providers.put(Type.B, providerB());
   ...
}


так былобы отлично, но получаю NPE :)

пока реализовал все через spring ServiceLocatorFactoryBean

@Bean(name = "providerA" )
public Provider providerA(){ return new ProviderA();}

@Bean
public ServiceLocatorFactoryBean myFactoryServiceLocatorFactoryBean() {
ServiceLocatorFactoryBean bean = new ServiceLocatorFactoryBean();
bean.setServiceLocatorInterface(TestFactory.class);
return bean;
}
@Bean
public StorageFactory storageFactory() {
return (TestFactory) myFactoryServiceLocatorFactoryBean().getObject();
}

вызов происходит

@Autowired
private TestFactory testFactory;

testFactory.getProvider("providerA");

где

interface TestFactory{

public Provider getProvider(String providerType);

}


а мне хотел делать через enum providerType
...
Рейтинг: 0 / 0
spring Factory config
    #38837213
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bob8так былобы отлично, но получаю NPE :)


Х.З. не силен в Java Spring config.
Обычно пользуюсь xml-config.
Там просто объявляешь Bean, а потом на него можно делать ref.
По идее для Java Spring config должно быть так же.

IMHO я бы вообще то бы создал для атрибуты для ProviderA И ProviderB
и инициализировал их в @PostConstruct

А в getXXX их возвращал.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / spring Factory config
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]