Предисловие
Инверсия контроля (МОК) используется для решения связи и в основном делится на два типа: инъекция зависимости и поиск зависимости.
Инъекция зависимости заключается в том, чтобы вводить зависимости, которые должны быть в программе извне в программу. Конечно, это также концепция дизайна.
Предполагая, что существует реализация B интерфейсов A и A, этот код будет выполнен A = New B (); В настоящее время определенная зависимость неизбежно возникнет. Тем не менее, интерфейс, по -видимому, решает зависимость, но при этом связь все равно будет происходить. Мы можем использовать инъекцию зависимостей для достижения развязки. В МОК вы можете поместить код, от которого вы хотите зависеть в XML, и сформировать это отношение зависимости, когда это необходимо, через контейнер, то есть внедрить необходимую реализацию интерфейса в класс, который нуждается в нем. Это может быть источником термина «инъекция зависимости».
Простое понимание инъекции зависимостей
Итак, давайте отбросим технологии, связанные с весной и XML сейчас, как мы можем использовать самый простой способ внедрения инъекции зависимостей? Теперь это все еще реализация интерфейсов A и A.
Таким образом, наша цель такая, a = new b (); Теперь мы определяем класс C, и ниже приводится взаимосвязь между C и A. для нового, C создает класс реализации для интерфейса
открытый класс C {private a a; public c (a a) {this.a = a; }}Так как использовать новый? Определите класс D и вызовите конструктор C в d new b (); то есть
открытый класс d {@test public void use () {c c = new c (new b ()); }}Таким образом, у нас не будет зависимостей между A и B в C. Если мы хотим изменить класс реализации A, мы можем напрямую изменить параметры метода строительства в D. Он очень прост, а также решает связь. Этот метод является наиболее известным как инъекция конструктора.
Затем пружина - это решение для связи и использования МОК. Вот самый простой пример инъекции в зависимости от пружины:
SpringConfig.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="sayhello"> <constructor-arg ref="hello"/> </bean> <bean id="hello" /> < /beans>
Анализ: здесь настроены два боба. Во -первых, внедрить бобов в конструктор, а второй - это боб, который должен быть введен в конструктор.
Привет. Ява
Улыбка пакета;/*** Создана Smile на 2016/4/21. */public class hello {public hello () {System.out.println ("hello"); } public void sayshello () {System.out.println («Я хочу сказать привет»); }}TheInterface.java
Улыбка пакета;/*** Создана Smile на 2016/4/20. */public class theTestinterface {private Hello Hello; public theTestinterface (привет привет) {this.hello = hello; }}Использовать. Ява
пакет com.smile; import org.junit.test; import org.springframework.context.applicationContext; import org.springframework.context.support.classpathxmlapplicationContext; импорт Smile.hello;/*** Создан Smile на 2016/4/21. */public class использовать {@test public void usetest () {ApplicationContext context = new ClassPathxMlapplicationContext ("SpringConfig.xml"); Привет привет = (привет) context.getbean ("Привет"); hello.sayhello (); }}Суммировать
Вышеуказанное - все содержание этой статьи. Я надеюсь, что содержание этой статьи имеет определенную справочную ценность для каждого обучения или работы. Если у вас есть какие -либо вопросы, вы можете оставить сообщение для общения. Спасибо за поддержку Wulin.com.