Prefácio
A inversão do controle (COI) é usada para resolver o acoplamento e é dividida principalmente em dois tipos: injeção de dependência e pesquisa de dependência.
A injeção de dependência é injetar as dependências que devem estar no programa externamente no programa. Obviamente, também é um conceito de padrões de design.
Supondo que exista a implementação B das interfaces a e a, esse código será executado a a = new b (); Neste momento, uma certa dependência ocorrerá inevitavelmente. No entanto, a interface parece resolver a dependência, mas o acoplamento ainda ocorrerá ao fazê -lo. Podemos usar a injeção de dependência para alcançar a dissociação. No COI, você pode colocar o código do qual deseja depender no XML e formar esse relacionamento de dependência quando necessário através de um contêiner, ou seja, injete a implementação de interface necessária na classe que precisa. Esta pode ser a fonte do termo "injeção de dependência".
Compreensão simples da injeção de dependência
Então, vamos deixar de lado as tecnologias relacionadas à primavera e XML agora, como podemos usar a maneira mais fácil de implementar uma injeção de dependência? Agora ainda é a implementação das interfaces A e A.
Portanto, nosso objetivo é assim, a a = novo b (); Agora estamos definindo uma classe C, e o seguinte é a relação entre C e A., a fim de novo, C cria uma classe de implementação para uma interface
classe pública C {private a a; public c (a a) {this.a = a; }}Então, como usar o novo? Defina uma classe D e chame o construtor de C em D New B (); aquilo é
public class D {@test public void use () {c c = new C (new B ()); }}Dessa maneira, não teremos dependências entre A e B em C. Se quisermos alterar a classe de implementação de A, podemos modificar diretamente os parâmetros do método de construção em D. É muito simples e também resolve o acoplamento. Este método é o mais conhecido como injeção de construtor.
Então a primavera é a solução para o acoplamento e o uso do COI. Aqui está o exemplo mais simples de injeção de dependência da primavera:
Springconfig.xml
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http:/wwww.w3 xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-bans.xsd"> <ean id = "sayhello"> <frutor-) /> </ Beans>
Análise: Dois feijões estão configurados aqui. O primeiro é injetar um feijão no construtor, e o segundo é o feijão a ser injetado no construtor.
Olá.java
pacote smile;/*** Criado por Smile em 2016/4/21. */public class hello {public hello () {System.out.println ("hello"); } public void dizhello () {System.out.println ("Eu quero dizer olá"); }}TheInterface.java
pacote smile;/*** Criado por Smile em 2016/4/20. */public class thetestinterface {private hello hello; public theTestInterface (hello hello) {this.hello = hello; }}Use.java
pacote com.smile; importar org.junit.test; importar org.springframework.context.applicationContext; importar org.springframework.context.support.classpathxmlapplicationContext; import smile.hello;/** ** ** criado por smile em 2016/4/21. */public classe use {@test public void useTest () {ApplicationContext context = new ClassPathXMLApplicationContext ("springConfig.xml"); Olá, olá = (olá) context.getBean ("Hello"); Olá.sayhello (); }}Resumir
O acima é o conteúdo inteiro deste artigo. Espero que o conteúdo deste artigo tenha certo valor de referência para o estudo ou trabalho de todos. Se você tiver alguma dúvida, pode deixar uma mensagem para se comunicar. Obrigado pelo seu apoio ao wulin.com.