Мы знаем, что функция автоматической конфигурации Spring Boot может определить, какая конфигурация пружины следует использовать, а какая не следует использовать в соответствии с различными ситуациями. Например:
Как это было достигнуто? Причина в том, что он использует условную конфигурацию Spring, которая позволяет существовать в приложении, но эти конфигурации игнорируются до того, как будут выполнены определенные конкретные условия.
Чтобы реализовать условную конфигурацию, нам необходимо использовать @conditional Condate Annotation. Далее, давайте напишем небольшой пример, чтобы испытать, как работает @conditional.
1. @conditional небольшой пример
Мы знаем, что команда отображения списка в Windows является DIR, а команда отображать список в системе Linux - это LS. Основываясь на условной конфигурации, мы можем достичь разных значений в различных операционных системах.
1. Определение условий суждения
1.) Условия принятия решений в Windows
/** * Реализовать интерфейс условий пружины и переопределить метод Matches () и вернуть True, если операционная система - Windows * */public Class WindowsCondition реализует условие {@override public boolean matches (conditioncontext context, annotatedtypemetadata metadata) {return context.getenvironment (). }}2.) Условия принятия решений в Linux
/** * Реализовать интерфейс условий пружины и переопределить метод Matches () и вернуть True, если операционной системой является Linux * */public Class LinuxCondition реализует условие {@override public boolean matches (conditioncontext context, annotatedtypemetadata metadata) {return -context.getenVirment (). }}2. Классы бобов в разных системах
1.) Интерфейс
Общедоступный интерфейс ListService {public String showlistline ();}2.) Класс бобов под окнами
открытый класс WindowsListService реализует ListService {@Override public String showlistline () {return "dir"; }}3.) Класс бобов под Linux
открытый класс LinuxListService реализует ListService {@Override public String showlistline () {return "ls"; }}3. Класс конфигурации
@ConfigurationPublic Class ConditionConfig { / *** Пропустите аннотацию @conditional и верните экземпляр Windowslistservice, если он соответствует условиям Windows* / @bean @conditional (WindowsCondition.class) Общественный список WindonWslistservice () {return new Windowslistservice (); } / *** Передайте аннотацию @conditional и верните экземпляр Linuxlistservice, если он соответствует условиям Linux** / @bean @conditional (linuxcondition.class) publicservice linuxlistservice () {return new linuxlistservice (); }}4. Тестовый класс
Public Class ConditionTest {public static void main (string [] args) {annotationConfigApplicationContext context = new AnnotationConfigApplicationContext (condityConfig.class); ListService LiledService = context.getBean (listservice.class); System.out .println (context.getEnvironment (). GetProperty ("os.name") + "Команда списка под системой:" + listservice.showlistline ()); }}5. Запустите тестовый класс, так как я нахожусь в системе Windows 7, результат
Команды списка в рамках системы Windows 7: DIR
Если ваш на Linux, результат будет
Команды списка в рамках системы Linux: LS
2. Условная конфигурация пружинной загрузки
В проекте Spring Boot будет пакет JAR под названием Spring-Boot-AutoConfigure
Условная конфигурация реализована в этой банке. Он использует следующие условные аннотации, которые начинаются с @conditional:
Далее, давайте посмотрим на столбец исходного кода:
Возьмите jdbctemplateautoconfiguration в качестве примера, он содержит этот код:
@Bean @primary @conditionalonmissingbean (jdbcoperations.class) public jdbctemplate jdbctemplate () {return new jdbctemplate (this.datasource); }Компания JDBCTemplate будет инициализироваться только тогда, когда нет JDBCoperations (если вы посмотрите на исходный код JDBCTEMPLATE, вы обнаружите, что класс JDBCTEMPLATE реализует интерфейс JDBCoperations).
На основе вышеуказанного контента мы можем прочитать исходный код, связанный с автоматической конфигурацией.
Суммировать
Выше приведено автоматическая конфигурация @conditional и Spring Boot в Spring Boot, представленном вам редактором. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!