При написании реализации интерфейса иногда существует несколько классов реализации. В этой статье представлена указание конкретного класса реализации, передавая строку при вызове.
1. Классы интерфейса и реализации:
// интерфейс public interface service interface {public void method ();} // Два конкретных класса реализации @service ("aservice") открытый класс Aserviceimpl реализует ServiceInterface {@Override public void method () {System.out.println ("IMP - это"); } @Override public String toString () {return "a"; }} @Service ("bservice") открытый класс Bserviceimpl реализует ServiceInterface {@Override public void method () {System.out.println ("Impl IS B"); } @Override public String toString () {return "b"; }}Метод ToString () переписан в классе реализации, и вы можете настроить строку. Когда вы передаете указанную строку при вызове, вы можете получить соответствующую фасоль.
2. Зарегистрировать письмо:
@Service ("Register") Регистр открытого класса реализует инициализацию, применяемость, применяемость {private map <string, serviceInterface> serviceImplmap = new hashmap <> (); Private ApplicationContext ApplicationContext; // Получить контекст Spring @Override public void setApplicationContext (ApplicationContext ApplicationContext) Throws BeanSexception {this.ApplicationContext = ApplicationContext; } // Получить все бобы класса реализации интерфейса и поместите их в карту в соответствии с установленными вами правилами, @Override public void afterpropertiesset () throws exception {map <string, serviceInterface> beanMap = applicationContext.getBeansoftype (serviceInterface.class); // Следующий код должен поместить бобы в карту в соответствии с установленными вами правилами, и мое правило здесь является ключом: service.tostring (); Значение: Bean // При вызове конкретная строка параметра, передаваемого в Service.toString (), может получить соответствующий бон // Вы также не можете выполнять здесь следующие операции, просто используйте BeanMap напрямую. При вызове имя боба передается (ServiceInterface) для (serviceInterface serviceImpl: beanmap.values ()) {serviceImplmap.put (serviceImpl.toString (), serviceImpl); }} public serviceInterface getServiceimpl (string name) {return serviceImplmap.get (name); }} 3. Класс тестирования:
@Resourceregister Register; @Testpublic void testservice () {serviceInterface service = register.getServiceImpl ("a"); service.method (); ServiceInterface Service2 = Register.GetServiceImpl ("b"); service2.method ();}Результаты работы показаны на рисунке:
Замечание:
После загрузки весны получите метод для применения контекста:
Реализация интерфейса ApplicationContextaware, Spring ApplicationContext может быть получен в процессе загрузки бобов. Это особенно важно. ApplicationContext - это контекст приложения Spring. Большое количество содержания и информации о контейнере пружины, включая любые бобы, может быть получено из ApplicationContext.
@Component ("Informergerigistry") открытый окончательный класс Informergistry реализует ApplicationContextaware {private ApplicationContext ApplicationContext; @Override public void setApplicationContext (ApplicationContext ApplicationContext) Throws BeanSexception {this.ApplicationContext = ApplicationContext; }} Для часто используемого интерфейса расширения бобов, пожалуйста, см.
Уведомление:
Весна начинается, когда вы используете следующий метод для получения контекста пружины. Если вы напишете следующий метод несколько раз, будут начаты несколько контейнеров по пружине, чтобы скопировать код следующим образом: ApplicationContext ctx = new classpathxmlapplicationcontext ("classpath: meta-inf/spring/*. Xml");
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.