实际上,您可以通过在配置文件中将其声明为Bean来使用不带XML的ServiceLocatorFactory。
@Beanpublic ServiceLocatorFactoryBean myFactoryServiceLocatorFactoryBean(){ ServiceLocatorFactoryBean bean = new ServiceLocatorFactoryBean(); bean.setServiceLocatorInterface(MyServiceFactory.class); return bean;}@Beanpublic MyServiceFactory myServiceFactory(){ return (MyServiceFactory) myFactoryServiceLocatorFactoryBean().getObject();}然后,您仍然可以照常使用工厂,但是不涉及XML。
@Value("${selector.property}") private String selectorProperty;@Autowired @Qualifier("myServiceFactory") private MyServiceFactory myServiceFactory;private MyService myService;@PostConstructpublic void postConstruct(){ this.myService = myServiceFactory.getMyService(selectorProperty);}


