Резюме весенней индукции

задняя часть программист Spring регулярное выражение

предисловие

Если и существует какой-либо фреймворк, который неизбежно будут изучать и использовать Java-программисты, то Spring должен быть одним из них. Этот блог будет систематическим обзором использования Spring блогерами в их повседневной работе.

Некоторые концепции и идеи Spring

Ядро Spring: АОП, IOC.

Проще говоря, это передача объектов Spring для управления и реализация некоторых «шаблонных» операций посредством аспектно-ориентированного программирования, освобождая программистов для того, чтобы уделять больше внимания бизнес-реализации.

Spring уже является универсальным фреймворком с открытым исходным кодом и формирует экосистему Spring.

О МОК

IOC с операционной точки зрения реализуется либо с помощью конфигурации XML, либо с помощью аннотаций. В реальной разработке способ аннотирования становится все более популярным.

Вам необходимо импортировать зависимости и ссылаться на ограничения схемы XML в соответствии с используемыми функциями.

Имя и расположение основного файла конфигурации Spring не фиксированы, но в реальной разработке он обычно указывается как applicationContext-xxx.xml. Этот способ имеет два преимущества: во-первых, конфигурационными файлами Spring можно управлять в модулях, а во-вторых, за счет унифицированного префикса удобно регулярно загружать эти конфигурационные файлы.


Spring

Создание XML-конфигурации bean-компонентов

Сделайте это напрямую через ,Предпосылка заключается в том, что класс имеет конструктор без параметров (принцип, лежащий в основе этого, создается посредством отражения). Этот метод наиболее часто используется на практике, конечно, существуют также статические фабрики и фабрики экземпляров.

Еще один момент, на который следует обратить внимание: является ли компонент одноэлементным или множественным?

существует в теге beanscopeАтрибуты используются для описания:

синглтон: синглтон, по умолчанию

прототип: несколько экземпляров

запрос/сеанс и т. д.

Внедрение свойства компонента: способ XML

XML-создание bean-компонентов осуществляется посредством отражения, так как же работает внедрение атрибутов bean-компонентов?

При создании bean-компонента вы можете предоставить параметризованный конструктор для его установки;

Вы можете установить его, предоставив метод установки; (наиболее часто используемый)

Какая инъекция интерфейса, какая инъекция пространства имен P, они на самом деле не используются...

<bean id="" class="">

или

</bean>

Либо используйте значение, чтобы напрямую указать значение свойства, либо обратитесь к другому компоненту по ссылке.

Создание и внедрение bean-компонентов на основе аннотаций

Поскольку для реализации аннотаций Spring требуется поддержка АОП, необходимо обратить внимание на зависимости.Во-вторых, необходимо включить сканирование аннотаций в XML:

<context:component-scan base-package="" />

Фактически, эта конфигурация заставит Spring сканировать указанный пакет, создавать экземпляр bean-компонента с флагом аннотации и выполнять внедрение свойств. (вы можете обратиться к«Написание моего первого фреймворка: миниатюрный Spring MVC»)

4 аннотации для создания объектов:

@Component/@Controller/@Service/@Repository

В этих 4 аннотациях идентификатор bean-компонента указывается через атрибут value, через@scopeСотрудничайте, чтобы объявить одиночный ИЛИ множественный. (В настоящее время эти 4 функции аннотаций одинаковы, просто чтобы сделать цель класса аннотаций более ясной, и Spring оставил руку, может быть, это улучшит функцию в будущем?)

Как внедрить свойства?

@Autowired/@Resource/@Qualifier

Следует отметить, что @Resource находится в пакете javax, который предоставляется J2EE, а @Autowired предоставляется Spring. (Не нужно предоставлять метод установки)

@Resource вводится по имени по умолчанию, если не найден, вводится по типу.

@Autowired вводится по типу по умолчанию и может комбинироваться с @Qualifier для внедрения имени.

Итак, на что нам нужно обратить внимание?

Если @Autowired выполняет внедрение типов, вполне вероятно, что будет несколько типов удовлетворения (полиморфизм), так какой из них будет внедрен? Итак, если вы вводите по типу @Autowired, вы должны обратить внимание на это в сочетании с @Qualifier. Очевидно, что в реальной разработке внедрение должно быть детерминированным, поэтому внедрение по имени должно быть первым выбором!

IOC VS DI

IOC, инверсия управления, DI, внедрение зависимостей;

Только при передаче объекта в Spring Spring может помочь завершить настройку свойства, поэтому внедрение зависимостей не может существовать само по себе, и операцию нужно выполнять на основе IOC.

О АОП

Реализация АОП, механизма горизонтального извлечения, основана на шаблоне динамического прокси.

Несколько ключевых концепций АОП:

JoinPoint: точка соединения, грубо говоря, это метод, который можно улучшить;

PointCut: точка входа, которую JoinPoint перехватывает;

Совет: уведомление — действие после перехвата;

Аспект: Аспект, процесс применения улучшений к конкретным методам;

АОП Spring должен быть реализован с помощью aspectj, что можно сделать с помощью XML или аннотаций.

Например, если используется XML-метод, необходимо указать, какой метод класса A следует использовать для улучшения того или иного метода класса B, который включает в себя выражение выполнения;

Например, проще использовать метод аннотации, сначала включить АОП () в XML, а затем напрямую использовать что-то вроде @Before(value="execution(определенное выражение)) в методе расширения) ") возможно;

На самом деле, в реальной разработке чаще всего для АОП используются транзакции.

Весеннее управление транзакциями

Декларативное управление транзакциями Spring в основном основано на аннотациях. Прежде всего, нам нужно настроить диспетчер транзакций, а диспетчер транзакций требует от нас внедрить DataSource (пул соединений DBCP, c3p0 и т. д.), что легко понять, поскольку это транзакция БД. Как вы знаете, Spring предоставляет разные классы реализации транзакций для разных платформ уровня DAO (Spring JDBC/MyBatis/Hibernate...).

Мы можем увидеть пример:


Конфигурация транзакции аннотаций Spring

Конечно, для нескольких источников данных нам нужно определить несколько менеджеров транзакций, а также включить аннотации транзакций. Несколько менеджеров транзакций можно отличить по атрибуту квалификатора.

После завершения настройки непосредственно в классе или методе сервисного уровня используйте

@Transactional(value = "gcs", rollbackFor = Exception.class)

Принцип Spring и веб-интеграция

Оперативно это настроить прослушиватель в web.xml, а затем указать файл конфигурации Spring.

В каждом WEB-проекте есть объект ServletContext, и слушатель, который мы настраиваем, должен отслеживать его. Слушатель загружает файл конфигурации Spring, помещает созданный объект в поле ServletContext (то есть метод setAttribute) и получает объект. можно напрямую получить атрибут!

Ну вот и закончилось весеннее расчесывание!

счастливый Национальный день!

2017-10-06 by zhangfengzhe