В весеннем контейнере, в дополнение к установлению зависимостей через <fic>, между двумя бобами существуют некоторые особые отношения.
1 наследование
В принципе объектно-ориентированного программирования, когда несколько классов имеют одинаковые методы и свойства, родительский класс может быть введен для устранения дублированного кода. В пружинном контейнере, если несколько бобов имеют одинаковую информацию о конфигурации, мы можем определить родительский фасоль, чтобы детский фасоль автоматически наследует информацию о конфигурации родительских бобов.
<!-- Parent Bean--><bean id="abstractBook" p:name="veil" abstract="true"></bean><!-- Child Bean--><bean id="book1" p:press="Chongqing Publishing House" parent="abstractBook"/><bean id="book2" p:press="Shanghai Translation Publishing House" parent="abstractBook"/>
Вообще говоря, функция родительского фасоли состоит в том, чтобы упростить конфигурацию детского боба, поэтому она установлена на абстрактный класс (Abstract = "true"); Если родительский фасоль не установлен на абстрактный класс здесь, пружинный контейнер создаст создание родительского фасоли.
2 дозависимости
Вообще говоря, <FER> используется для установления зависимостей между бобами. Весенние контейнеры отвечают за управление этими отношениями. При создании бобов контейнер гарантирует, что все бобы зависят от бобов, завершили работу по инициализации.
Но в некоторых случаях зависимости между бобами не так очевидны.
Предположим, что в этом сценарии система устанавливает некоторые параметры системы (например, период достоверности пароля, будь то включение мониторинга и т. Д.), И эти параметры запуска используются для управления рабочей логикой системы. Мы используем класс настройки для представления этих параметров:
Настройки открытого класса { / ** * Время истечения пароля (Unit: Days) * / public static int pass_timeout = 30; / *** Будет ли включить мониторинг*/ public static boolean is_monitor = false;}Здесь мы устанавливаем значения по умолчанию для этих параметров. Система также имеет административный бэкэнд, через который администраторы могут регулировать эти параметры системы и сохранить их в базе данных. Следовательно, когда приложение начинается, эти параметры системы должны быть загружены из базы данных:
открытый класс System {public System () {init (); } /*** Инициализация* /private void init () {// Предположим, что эти значения поступают из настройки базы данных.pass_timeout = 20; Настройки.is_monitor = true; }}Система имеет диспетчер срока действия пароля, который создаст временную задачу для определения того, истекает ли пароль на основе [количество дней, когда пароль истекает] в параметрах системы:
открытый класс PassManager {int Timeout; public passmanager () {timeout = settings.pass_timeout; timertask (); } / *** Временная задача, чтобы определить, истекает ли пароль* / private void timertask () {} public int getTimeout () {return Timeout; }}Хотя PassManager не полагается непосредственно на настройки, логически, PassManager ожидает, что система будет загружать инициализированные параметры системы перед запуском.
Весной вы можете явно указать предварительную бобов бобов через свойство «Зависимости», чтобы гарантировать, что предварительный боб этого боба был загружен до создания.
<bean id = "System"/> <bean id = "Manager" зависит от = "System"/>
Если префикс зависит от нескольких бобов, имя боба может быть настроено запятыми, пространствами или полуколонами.
3 цитата идентификатор
Предположим, что фасоль должен ссылаться на значение идентификатора (Beanname) другой бобов. Обычно это используется для получения еще одной бобов через метод GetBean (Beanname) в бобах во время выполнения.
Это можно настроить так:
<bean id = "Автор"/> <bean id = "book" p: авторид = "Автор"/>
Добавлен авторидный атрибут в книге:
/** * Авторский идентификатор Bean */Private String Authorid;
Хотя это может быть установлено в этой буквальной форме, между ними нет реальных ссылок. Следовательно, ошибка конфигурации будет найдена только при вызове конкретного вызова.
Spring предоставляет тег элемента <iDref>, который ссылается на имя другой бобов через <iDref>. Таким образом, когда контейнер запускается, будет проверена правильность эталонных отношений, а неверная информация о конфигурации может быть найдена заранее.
<bean id = "Author10"/> <bean id = "book10"> <name = "autorird"> <idref bean = "Author10"/> </property> </bean>
Если возникает ошибка конфигурации, при запуске контейнера BeandefinitionStoreException будет выброшена пружинная контейнер, а анализатор XML IDE также найдет ссылочные ошибки заранее, поэтому рекомендуется использовать тег элемента <Idref> для ссылки на идентификатор.
Суммировать
Вышеприведенное - особая связь между весенними бобами, введенными вам редактором. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение. Редактор ответит вам вовремя!