МОК, как правило, является тем, что мы называем обращением с контролем, которое также является центром Java и часто спрашивает во время интервью.
Инверсия контроля (МОК в аббревиатуре английского языка) дает право создавать объекты в рамках, которая является важной особенностью структуры и не является специальным термином для объектно-ориентированного программирования. Он включает в себя инъекцию зависимостей (DI) и поиск зависимости.
МОК изменяет способ получения программы, от начала нового объекта до создания и инъекции сторонней структуры. Сторонние фреймворки обычно указывают, какая реализация вводится посредством конфигурации, тем самым уменьшая связь исходного кода.
Какое самое большое преимущество МОК?
Поскольку генерация объектов определяется в XML, она станет очень простым, когда нам нужно перейти на подкласс реализации (обычно такие объекты реалистичны в каком -то виде интерфейса), просто изменить XML, чтобы мы могли даже реализовать горячую подключение объектов (немного похоже на usb -интерфейс и жесткий диск SCIS).
МОК можно разделить на инъекцию зависимости (DI) и поиск зависимостей в соответствии с методом реализации.
DI является основным техническим подходом к контролю инверсии, разделенной на инъекцию сеттера и инъекцию конструктора
Инъекция сеттера
После экземпляра фасоли, вызывая без параметра -конструктора или статический метод без параметра, метод сеттера бобов вызывается для реализации инъекции сеттера.
открытый класс jdbcdatasource () {private String Driver; public void setdriver (String Driver) {class.forname (Driver); this.driver = Driver;}} ...............Далее, реализуйте конфигурацию впрыска Setter XML
<bean id="dataSource"> <property name="driver" value="oracle.jdbc.OracleDriver"/> <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/> <property name="user" value="andreny"/> <property name="password" value="root"/> </bean>
Инъекция конструктора
Это достигается путем вызова конструктора с параметрами. Когда контейнер создается, соответствующий конструктор будет выполнен в соответствии с типом параметра.
Общедоступный класс OracleUserdao реализует userdao {private jdbcdatasource dataSource; public oracleuserdao (jdbcdatasource dataSource) {this.datasource = dataSource;}} ................Укажите инъекцию по индексу параметра конструкции
<bean id="dataSource"> <proerty name="driver" value="oracle.jdbc.OracleDriver"/> <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/> <property name="user" value="andreny"/> <property name="password" value="root"/></bean><bean id = "userdao"> <construtor-argindex = "0" ref = "dataSource"/> </bean>
Суммировать
Выше приведенное дело о анализе кода IOC весны, я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на этот сайт:
Подробное объяснение IOC и DI's Spring
Подробное введение в реализацию симуляции IOC весны
Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!