Предисловие
Как кодер, занимаясь развитием Java, важность весны является самоочевидной. Вы можете иметь дело с весенними рамками каждый день. Весна так же названа, что приносит весенний комфорт для разработки Java Applications. Можно сказать, что весна является необходимой основой для любого разработчика Java для достижения передовых технологий. Конечно, нелегко хорошо изучить весну, особенно понять основные принципы весны. Требуется много времени и энергии, чтобы тщательно изучить его, и постоянно испытать и ошибки и обобщать фактические проекты, чтобы сформировать свое собственное мышление и понимание. У блоггера было очень мелкое понимание весны в начале, и можно было полагаться на проблему, которую Дю Нианг мог решить в целом при столкновении с проблемами в проекте. Тем не менее, в течение более года с тех пор, как весна находилась в контакте с весной, понимание ее системы структуры довольно хаотично, а глубокая технология все еще похожа на туман, и она не сформировала свое собственное познание и понимание, что очень неблагоприятно для улучшения технологии программирования. Ввиду этого я решил успокоиться и систематически изучить весеннюю структуру от начала до конца, и записывать детали обучения и обмениваться техническими знаниями с помощью формы блога. Хорошо, давайте доберемся до сути-
Введение в структуру Core Spring
Di (инъекция зависимости), инъекция зависимости и другая концепция, о которой мы часто слышим, фактически реализует те же функции, что и IOC (контрольная инверсия), но те же функции объясняются с разных точек зрения. Блогер здесь не пойдет, чтобы анализировать слишком много, есть много объяснений на Байду. Что нам нужно знать, так это то, что такое инъекция зависимости и почему инъекция зависимости. Чтобы понять эти два момента, я думаю, что обучение Spring является лучшей с точки зрения мышления.
Когда пружина не используется - то есть, когда нет введения зависимости, трудно достичь взаимного функционального сотрудничества между классами применений Java. Если определенный класс (а) должен реализовать свои функции, если ему необходимо полагаться на сотрудничество другого класса (b), необходимо активно создавать объект класса B в классе A, чтобы выполнить функции, используя методы класса B (вы не должны беспокоиться о статических методах и других ситуациях здесь). Это эквивалентно классу A, ответственного за управление всем жизненным циклом объектов класса B. В чрезвычайно простых случаях кажется, что нет проблем с новыми объектами другого класса в одном классе, но совместная связь между сложными классами приложений и классами часто является многосторонней. Мы не знаем, сколько альтернативных объектов реализация функции класса будет полагаться на сотрудничество. Следовательно, создание объектов в классе и управление всем жизненным циклом объекта вызовет высокую кодовую связь и невообразимую сложность. Итак, представьте, что если мы сможем передать жизненный цикл объекта стороннему компоненту для управления, и когда классу нужен другой объект, сторонний компонент будет создан непосредственно. Таким образом, класс может сосредоточиться только на реализации своих собственных функций, не управляя жизненным циклом других объектов класса, функции такого класса намного проще. Да, вы, должно быть, поняли, что Spring-это сторонний компонент. Нам просто нужно сказать Spring (контейнер), какие объекты необходимо управлять, и нам не нужно заботиться о том, как пружинная структура создает объекты. Таким образом, когда определенный класс A требует объекта класса B, если класс B был объявлен и передан управлению контейнерами Spring, то, когда программа работает до класса A и требует класса B, пружинный контейнер вводит объекты класса B в класс A через инъекцию зависимости, чтобы помочь в выполнении бизнес -функций. Благодаря инъекции зависимости сторонних компонентов объектам больше не нужно создавать и управлять ими зависимостей между самими классами. Существует также много способов создания впрыскивания объектов зависимости, таких как инъекция раздела, впрыск метода строительства, впрыск метода сеттера и т. Д. Говоря об этом, у вас должно быть относительно простое понимание инъекции зависимостей. Что касается того, почему необходима инъекция зависимости, приведенная выше статья уже очень четко объяснила. Чтобы уменьшить связь между компонентами в коде, мы должны сначала использовать простые примеры, чтобы интуитивно испытать преимущества инъекции зависимостей по сравнению с самостоятельно управлением объектами -
Общественный класс человек реализует человека {частный автомобиль QQCar; public man () {this.car = new qqcar (); } @Override public void xiabibi () {} public void rivecar () {car.drive (); }}Есть две реализации интерфейсного автомобиля: Mercedes-Benz и QQ Car. В приведенных выше кодах человека и QQCAR ветеран драйвер создал только объекты QQ CAR через конструктор, поэтому он может управлять только автомобилем QQ. Так что же должен делать ветеран, если он хочет водить Mercedes-Benz? Вы просите его воссоздать объект Mercedes-Benz? Такой высоко связанный код кажется беспомощным, поэтому мы сделаем некоторые улучшения в приведенном выше коде, инъекционные объекты:
Общественный класс человек реализует человека (частная машина; Public Man (автомобиль) {this.car = car; } @Override public void xiabibi () {} public void rivecar () {car.drive (); }}Приведенный выше код блокирует конкретные объекты, основанные на полиморфных характеристиках посредством инъекции интерфейса конструктора, так что водители ветеранов могут управлять тем, что они хотят. Это преимущество инъекции зависимостей.
AOP (ориентированное на аспект программирование), ориентированное на лицо программирование. В ежедневном развитии, когда мы выполняем определенную бизнес -функцию, мы пишем много кода. Когда мы наконец оптимизируем код, мы обнаруживаем, что код, который фактически завершает бизнес, может быть всего лишь два предложения, а остальные не очень актуальны для этой части бизнеса. Он полностью извлечен только для реализации определенного технологического кода. Поэтому, естественно, мы извлеките его в класс инструментов, чтобы все, что вы используете, в порядке, просто вызывая метод инструмента. Давайте посмотрим на это немного выше. В дополнение к завершению связанных бизнес -функций, функциональные компоненты каждого бизнес -модуля включают в себя дополнительные операции, такие как журналы, транзакции и контроль безопасности. Это не основные функции модуля, но они необходимы. Если эти дополнительные функции добавляются в код, каждый компонент бизнес -системы будет выглядеть слишком повторяющимся и сделать бизнес -код выглядеть запутанным и недостаточно чистым. В настоящее время вы спрашиваете Бога, может ли ваш бизнес -код сосредоточиться только на реализации бизнеса и игнорировать какие -либо неактуальные вещи, такие как журналы, транзакции и т. Д.? О, Бог сказал, что все в порядке, так что был AOP. Если цель инъекции зависимостей состоит в том, чтобы сохранить кооперативные компоненты в относительно свободном состоянии связи, AOP разделяет функции, распространяющиеся по применению, образуя многократные компоненты. С точки зрения непрофессионала, журналы, транзакции и т. Д. - все это многоразовые компоненты. Мы можем полностью извлечь журналы, транзакции, безопасность и другие функциональные коды, разбросанные в различных частях бизнес -кода, и стать отдельным компонентом инструмента. Объявите его как функциональный раздел в конфигурации пружины, а затем сообщите Spring, где и когда вы хотите использовать (врезаться в) эти многоразовые компоненты. Это моя простая интерпретация ориентированного на лицо раздела. Эта статья является всего лишь введением, поэтому блоггер просто кратко объяснит концепцию и не будет создавать конкретные реализации кода или конфигурации. Он будет представлен в последующих сообщениях в блоге. Добро пожаловать, чтобы посмотреть.