Ao escrever a implementação da interface, às vezes existem várias classes de implementação. Este artigo apresenta a especificação de uma classe de implementação específica, passando em uma string ao ligar.
1. Classes de interface e implementação:
// interface interface pública Interface ServiceInterface {public void method ();} // duas classes de implementação específicas @service ("asservice") classe pública ASERVICEIMPL implementa ServiceInterface {@Override public void Method () {System.out.println ("The Impl é um"); } @Override public string tostring () {return "A"; }} @Service ("BService") Public Classe BServiceImpl implementa ServiceInterface {@Override public void method () {System.out.println ("O Impl Is B"); } @Override public string tostring () {return "b"; }}O método tostring () é reescrito na classe de implementação e você pode personalizar a string. Quando você passa a sequência especificada quando chamado, você pode obter o feijão correspondente.
2. Redação de registro:
@Service ("Register") Classe public Register implementa InitializingBean, ApplicationContextAWare {Map privado <String, ServiceInterface> ServiceImplMap = new Hashmap <> (); ApplicationContext ApplicationContext privado; // Obtenha o contexto do Spring @Override public void setApplicationContext (ApplicationContext ApplicationContext) lança beansexception {this.applicationContext = ApplicationContext; } // Obtenha todos os grãos da classe de implementação da interface e coloque -os no mapa de acordo com as regras que você definiu, @Override public void depoisPROPERTIESSET () lança exceção {map <string, serviceInterface> beanmap = ApplicationContext.getBeansOftype (ServiceInterface.class); // O código a seguir é colocar o feijão no mapa de acordo com as regras que você definiu, e minha regra aqui é chave: service.toString (); Valor: Bean // Ao ligar, a sequência específica do parâmetro passada para o serviço.toString () pode obter o feijão correspondente // Você também não pode fazer as seguintes operações aqui, basta usar o BeanMap diretamente. Ao chamar, o nome do feijão é passado (ServiceInterface) para (ServiceInterface ServiceImpl: beanmap.values ()) {ServiceImplmap.put (ServiceImpl.toString (), ServiceImpl); }} public ServiceInterface getServiceImpl (nome da string) {return ServiceImplMap.get (nome); }} 3. Classe de teste:
@Resourceregister registro; @Testpublic void testService () {ServiceInterface Service = Register.getServiceImpl ("A"); Service.Method (); ServiceInterface Service2 = Register.getServiceImpl ("B"); Service2.Method ();}Os resultados da operação são mostrados na figura:
Observação:
Após o carregamento da primavera, obtenha o método para aplicar o Context:
Implementando o feijão ApplicationContexTAWare, o ApplicationContext da Spring pode ser obtido durante o processo de carregamento do feijão. Isso é particularmente importante. ApplicationContext é o contexto de aplicação da primavera. Um grande número de conteúdo de contêiner de mola e informações, incluindo qualquer feijão, pode ser obtido no ApplicationContext.
@Component ("InformerGistry") Public Final Classe InformerRegistry implementa ApplicationContextAWe {private ApplicationContext ApplicationContext; @Override public void setApplicationContext (ApplicationContext ApplicationContext) lança beansexception {this.applicationContext = ApplicationContext; }} Para a interface de extensão de feijão comumente usada, consulte: http://www.cnblogs.com/xrq730/p/5721366.html
Perceber:
A primavera é iniciada quando você usa o seguinte método para obter o contexto da primavera. Se você escrever o método a seguir várias vezes, vários contêineres de mola serão iniciados para copiar o código da seguinte forma: ApplicationContext ctx = new ClassPathXMLApplicationContext ("ClassPath: meta-inf/spring/*. Xml");
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.