InversionofControl (сокращено как МОК)
Проще говоря, когда вам нужен объект, вам не нужно вручную новую, но другие контейнеры предоставят вам его; Весна - это контейнер МОК.
Например:
Весной вам часто нужно собирать DAO в эксплуатации и, как правило, использовать @autowired Annation: аналогично следующему
Общедоступный класс ServiceImpl {@Autowired Dao Dao; public void getData () {dao.getData (); }Если вы используете DAO напрямую без инициализации, сообщается о исключении NULL Pointer. Метод весны состоит в том, чтобы загрузить необходимые классы для вас посредством отражения.
Вот пример, который имитирует Spring's DI и IOC
Сначала напишите две аннотации для имитации пружины:
Аннотация объекта представляет собой @service @target (elementtype.type) Spring // class @retention (artententypolicy.runtime) public @Interface Entity {} представляет @autowrid @target (elementtype.field) из Spring // @retention (sturantentpolicy.runtime) из метода // public @Interface {{{streationPolicy.Runtime) метода // public @Interface После установки аннотации созданы два класса:
Класс дождя представляет необходимость получения данных о погоде (база данных или сервера) из других мест.
открытый класс дождь {public void rain () {System.out.println ("Raing"); // я написал это напрямую для удобства}}Класс погоды представляет полученные данные о погоде
@EntityPublic Class Weather {@Resources Rain Rain; // вот идет дождь public void weather_rain () {rain.rain (); }Ниже приведено прямое инъекция через размышление:
Во -первых, перечислить по указанному имени пакета: этот шаг сначала опущен.
Сначала создайте список для моделирования контейнера для пружинных бобов, а затем будут инициализированы все инициализированные классы с аннотациями объекта.
public class Weather_Reflect {list <Object> objectList; // Совместный Spring Container public Weather_Reflect () {objectList = new ArrayList <Object> ();} // Фактически, лучший способ здесь - найти класс с аннотациями сначала, судить объект объекта). ClassNotFoundException, allodalAccessException, instantiationException, nosuchmethodexception, vocationTargetException {class <?> Clazz = object.getClass (); if (clazz.isannotationpresent (entity.class)) {// Судья, есть ли он поля. Field: Fields) {if (field.isannotationpresent (resources.class)) {// судить, является ли класс <?> rainclass = class.forname (field.gettype (). getName (), false, thread.currentThread (). getContextClassloader ()); // Здесь первой загрузкой класс дождя .se.sese (object -rainclass. RainObjectList.Add (Object); // Наконец -то сохраните назначенную погоду в контейнер}}}}} public List <Object> returnList () {return objectList; // возвращать контейнер для будущего использования}Наконец, он должен напрямую имитировать использование контроллера
Общедоступный класс Weatherpediction {public static void main (String args []) Throws ClassNotFoundException, nosuchMethodexception, instantiationException, allodalaccessexception, vococationTargetException {Weatherprediction Weatherprediction = new Weatherpediction (); погода = погода). Сообщается об исключении Null Pointer, и контейнер присваивает его переменной дождя, поэтому он может нормально выводить}/* моделировать процесс запуска пружины. На самом деле, вы можете написать класс отдельно. Этот шаг - то, что должен делать контейнер, и нам не нужно беспокоиться об этом*/public Object Springdo () бросает classnotfoundexception, nosuchmethodexception, vococationTargetException, instantiationException, нелегалаксексекса {Weather_reflect weather_reflect = new Weather_Reflect (); //////время. Weather_reflect.get_ref (Weather); // Новая работа переменных в своем классе и поместите их в объект контейнера = heate_reflect.returnlist (). get (0); return object;} Откройте выход: идет дождь.В дождях нет новой операции в дождях, но ее можно использовать. Это должен быть самый простой пример МОК для имитации пружины. Конечно, весенний контейнер IOC гораздо более мощный, чем этот, например, необходимо учитывать безопасность потоков, и требуются различные детали.
Суммировать
Выше приведено подробное объяснение этой статьи о простой реализации принципа IOC весеннего, я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на этот сайт:
Подробное объяснение принципов весеннего МОК
Краткое понимание примеров IOC, AOP и кода весны и кода
Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!