Нулевая защита — Студопедия
Поделись
Вариант №1
Схема защиты на рис. 109, а, применяется в случае, если в ней только один или два ( реверсивных ) контактора.
Для включения двигателя в сеть нажимают кнопку SB1 «Пуск», вследствие чего включается линейный контактор КМ, который замыкает главные контакты КМ1…КМ3 и вспомогательный КМ4.
Если после этого кнопку SB1 отпустить, ток в катушке КМ контактора поддерживается через вспомогательный контакт КМ4.
При снижении напряжения до недопустимого якорь контактора отпадает, контакты КМ1…КМ3 размыкаются, двигатель отключается от сети и останавливается.
Кроме того, размыкается контакт КМ4, поэтому ток в катушке КМ контактора исчезает.
При восстановлении напряжения до номинального ток в катушке КМ появится только после нажатия кнопки SB1 «Пуск».
Таким образом, данная схема исключает автоматическое повторное включение электродвигателя после восстановления напряжения.
Вариант №2
Схема на рис. 109, б применяется как часть более сложной схемы управления в электроприводах, с числом контакторов более двух. К таким электроприводам относятся грузовые лебедки и краны, якорно-швартовные устройства и другие, управляемые при помощи командоконтроллера.
Как следует из схемы, рукоятка командоконтроллера имеет 5 положений: нерабочее «0» и по два рабочих «I» и «II» в обе стороны ( «Вперед» — «Назад» ).
В исходном положении «0» контакт SA командоконтроллера замкнут. Поэтому при подаче напряжения на зажимы А и В ( род тока не играет роли ) через этот контакт образуется цепь тока катушки реле напряжения KV.
Реле KV включается и замыкает три своих контакта: KV1, KV2 и KV3. Контакт KV1 шунтирует контакт SA ( но только в нулевом положении ), через контакты KV2 и KV3 поступает питание на остальную часть схемы управления.
Схема готова к работе.
При работе, например, в направлении «Вперед», рукоятку командоконтроллера выводят из положения «0» и устанавливают в положение «I». При этом контакт SA размыкается, но остается замкнутым контакт KV1. Через него катушка KV продолжает получатьпитание из сети.
При переводе рукоятки в положение «II» схема не изменяется.
При снижении напряжения ниже допустимого якорь реле KV отпадает, все три его контакта размыкаются.
При размыкании контакта KV1 ток в катушке реле KV пропадает, а при размыкании контактов KV2 и KV3 снимается питание с остальной части схемы управления. Двигатель отключается от сети и останавливается.
При восстановлении напряжения до номинального ток в катушке КМ появится только после возврата рукоятки командоконтроллера в нулевое положение. Только тогда замкнется контакт SA, через который снова получит питание катушка реле KV и повторно замкнутся контакты KV1, KV2 и KV3.
. Таким образом, и эта схема исключает автоматическое повторное включениеэлектродвигателя после восстановления напряжения. Пуск возможен только при участии человека ( надо нажать кнопку SB1 «Пуск» ).
4.3.3.Схема нулевой защиты с аварийным выключателем
У электроприводов, управляемых при помощи командоконтроллера, заедание рукоятки в промежуточном положении может привести к аварии, т.к. электродвигатель не останавливается.
Чтобы избежать аварии, в цепь катушки реле напряжения KV включают пакетный выключатель S1 ( рис. 110 ). Этот выключатель называют аварийным или выключателем управления. Выключатели устанавливают на тумбе командоконтроллера сбоку или сверху.
Рис. 108. Схема нулевой защиты с аварийным выключателем S1
При работе этот выключатель постоянно включен, поэтому включено реле напряжения KV. Через контакт KV:2 этого реле питание подается на основную часть схемы управления.
В случае возникновения аварийной ситуации оператор ( лебедчик ) выключает S1.
Реле KV теряет питание и размыкает контакты KV:2 и KV:1.
При размыкании контакта KV:2 снимается питание с основной части схемы управления, двигатель отключается от сети и затормаживается.
Размыкание контакта KV:1 делает невозможным включение реле KV до тех пор, пока не замкнется контакт SM1 командоконтроллера, т.е. пока не рукоятка командоконтроллера не будет возвращена в нулевое положение.
После этого реле KV получит питание и можно продолжить работу.
Выключатели управления могут быть одно- или двухполюсными.
9. Типовые комплектные устройства. Реостаты. Магнитные пускатели. Станции управления и магнитные контроллеры.
Nothing found for %25D0%25Bc%25D0%25B0%25D0%25Ba%25D1%2581%25D0%25B8%25D0%25Bc%25D0%25B0%25D0%25Bb%25D1%258C%25D0%25Bd%25D0%25B0%25D1%258F %25D1%2582%25D0%25Be%25D0%25Ba%25D0%25Be%25D0%25B2%25D0%25B0%25D1%258F %25D0%25B7%25D0%25B0%25D1%2589%25D0%25B8%25D1%2582%25D0%25B0 2
Инструктаж машиниста подъемных установок
View More
Модульные контакторы
View More
защита электродвигателя
View More
Как выбрать сечение провода
View More
Стабилизатор напряжения
View More
Переменный ток.
Откуда берется синусоида?View More
как читать электрические схемы
View More
как правильно читать электронные схемы
View More
определение начала и конца фазных обмоток асинхронного электродвигателя
View More
тепловая защита электродвигателя
View More
Прибор для выверки соосности валов
View More
Электрические двигатели
View More
Как рассчитать сечение кабеля
View More
Тепловое реле для защиты двигателей
View More
Тепловое реле РТТ32П
View More
Контактор МК4-10
View More
Динамическое торможение
View More
Подключение двигателя 380 на 220
View More
Редуктор 1/1
View More
Редуктор
View More
зануление и заземление ч3.
View More
зануление и заземление ч2.
View More
Зануление и заземление ч1.
View More
Страницы
- 2Ц-3,5х1,8 Экзаменационные билеты. Механизм перестановки барабанов. Назначение и устройство.
- 2Ц6х2,8 Замена тормозных колодок, описание работ ПОР
- Search Results
- Автоматизация подъемных установок
- Аппаратура управления пневмоприводом тормоза
- Аппаратура управления подъемными установками. Контакторно-релейная аппаратура (КРА)
- Асинхронный двигатель
- Б.1.2.Максимальная токовая защита. Что такое “0” защита эл. двигателя. Релейная защита.
- Б2.2Реле утечки
- Баковые масляные выключатели
- Библия релейной защиты и автоматики
- Билеты машинисту п/у
- Аппарат задания и контроля типа АЗК-1:какие функции он выполняет.
- Асинхронный электродвигатель. Принцип работы. Динамическое торможение.
- Б.1.1Классификация подъемных установок: по назначению, по типу.
- Пульт машиниста: назначение, аппараты и приборы на пульте. Контрольноизмерительная аппаратура.
- Что проверяет машинист при приеме смены.
- Пульт машиниста: назначение, аппараты и приборы на пульте. Контрольноизмерительная аппаратура.
- Блокировки на п/у. Защиты на п/у.
- Движение бадей в стволе
- Документация на п/у.
- Редукторы. Назначение. Сочленение с двигателем. Чем проверить уровень масла в редукторе. Соединительные муфты. Тахогенератор.
- Требования предъявляемые к прицепным устройствам.
- Бадьи и требования к ним.
- Указатель глубины, назначение его элементов.
- Что такое концевая нагрузка.
- Блокировка нулевого положения командоконтроллера подъемного двигателя
- Блокировка от залипания ускоряющих контакторов
- Блокировка от чрезмерного износа тормозных колодок ВИК
- Блокировка положения рукоятки рабочего тормоза
- Вентиляционный журнал
- Вентиляционный надзор
- Взрывные работы в подземных выработках
- Виды инструктажей
- Во время замены канатов рассоединив барабаны нужно или нет отключать АЗК
- Водоотлив
- Вопрос-Ответ БАРНО электродвигателя
- Вскрытие участков с потушенными пожарами
- Высоковольтные реверсоры
- Генераторы и двигатели постоянного тока
- Гидропривод тормоза. Допустимый уровень масла. Давления масла
- Гидропривод тормоза. Допустимый уровень масла. Допустимое давление масла.
- Двухфазные схемы максимальной токовой защиты
- Действия машиниста в аварийной ситуации
- Действия машиниста в ремонтное время
- Действия машиниста подъема во время аварийной остановки подъемного двигателя во время выдачи груза и людей
- Демпфер рабочего тормоза подъемных машин НКМЗ
- Диаграммма скорости при предохранительном торможения
- Допускаемые зазоры между максимально выступающими частями подъемных сосудов, крепью и расстрелами в стволах вертикальных шахт
- Допустимые потери давления при подключении РДУ к воздушной сети
- Допустимые скорости движения ПС по вертикальным и наклонным выработкам
- Доставка взрывчатых материалов на подземных работах
- Доставка ВМ к местам работы
- ЕПБ
- Горные выработки
- ЕПБ при взрывных работах
- ЕПБ. Инструкция по составлению планов ликвидации аварий
- ЕПБ. Инструкция по составлению паспортов крепления и управления кровлей подземных горных выработок
- Журнал записи лиц, не сдавших светильники по окончании смены
- Журнал записи результатов осмотра крепи и состояния выработок
- Журнал записи результатов осмотра подъемной установки
- Журнал записи результатов осмотра подъемных канатов и их расхода
- Журнал записи результатов осмотра состояния стволов шахт
- Журнал регистрации ознакомления рабочих с запасными выходами
- Журнал учета работы вентилятора
- Задайте вопрос
- Заземление
- Замыкание витков обмотки
- Запас прочности каната
- Защита кабелей, электродвигателей и трансформаторов
- Защита минимального напряжения
- Защита от переподъема, назначение концевых выключателей. Как проверить защиту от переподъема.Что такое высота переподъема,место установки концевых выключателей.
- Защита от провисания струны и напуска каната
- Защита электродвигателей
- Защита электродвигателей напряжением ниже1000в
- Защита электродвигателей от замыканий одной фазы на землю
- Защита электродвигателей от коротких замыканий между фазами
- Защита электродвигателей от перегрузки
- Защитные средства и требования предъявляемые к ним
- Изготовление боевиков, зажигательных и контрольных трубок
- Измерение и регулировка воздушного зазора
- Измерение сопротивления постоянному току обмоток
- Инструкция о порядке хранения, использования и учета взрывчатых материалов
- Инструкция по ОТ для стволовой
- Инструкция по отбору проб рудничного воздуха
- Инструкция по охране труда для машиниста подъемной машины
- Инструкция по проверке действия реверсивных устройств вентиляторных установок
- Инструкция по производству сварочных и газопламенных работ в подземных выработках и надшахтных зданиях
- Инструкция по противопожарной охране шахт
- Инструкция по составлению вентиляционных планов
- Инструкция по устройству, осмотру и измерению сопротивления шахтных заземлений
- Исполнительный механизм тормоза, материал тормозных колодок
- Исполнительный механизм тормоза, материал тормозных колодок. Защита от износа колодок ВИК
- Исполнительный огран тормоза 2Ц-3,5х1,8
- Исполнительный орган тормоза с пружинным приводом
- Испытание тормозных устройств
- Испытания рудничных канатов
- Испытания тормозных устройств подземных подъемных установок
- Как осуществляется проверка тормозной системы и защитных устройств
- Как откорректировать подъемную установку 2Ц-4х1.8 НКМЗ
- Как тушить возгорание электродвигателей “Типовая инструкция по эксплуатации электродвигателей”
- Камеры для электрических машин и подстанций
- Канаты и прицепные устройства для спуска и подъема людей и грузов в вертикальных и наклонных выработках
- Канаты. Техническая информация
- Комплектация пожарных щитов
- Контакторы переменного тока
- Контакторы постоянного тока
- Контроль за состоянием рудничной атмосферы и контрольно-измерительная аппаратура.
- Контрольно-измерительная аппаратура
- Короткое замыкание между витками на токосъемных кольцах
- Кто имеет право давать распоряжения на переключения устройств
- Литература
- Максимальная токовая защита линий
- максимальная токовая защита с блокировкой минимального напряжения
- Малообъемные масляные выключатели
- Масляные выключатели до 10 кВ
- Машины постоянного тока
- Мгновенная токовая отсечка
- Медицинская помощь
- Мероприятия по ликвидации аварий в начальной стадии
- Меры безопасности при обслуживании механического оборудования п/у
- Методика наладки схемы автоматизации. Устройства программирования скорости.
- Надзор за канатами
- Надзор и контроль за электрооборудованием
- Назначение аварийного подъема
- Назначение блокировки контроля давления в пневмосистеме
- Назначение и принцип действия пружинно-грузового привода тормоза
- Назначение и проверка защиты контроля давления
- Назначение и проверка защиты от исчезновения возбуждения подъемного двигателя
- Назначение и устройство жидкостного реостата
- Назначение рабочего и предохранительного тормоза
- Назначение устройство и принцип действия дуговой блокировки
- Назначение, устройство, принцип действия регулятора давления РДУ
- Наладка автоматизированных подъемных установок
- Наладка комплекта электрооборудования для управления подземными подъемными машинами и лебедками
- Наладка электродинамического торможения
- Напочвенные дороги с канатным тяговым ограном ДКНЛ1
- Неисправности в релейно-контакторных схемах управления подъемных установок
- Неисправности концевых выключателей
- Неисправности тормозных устройств шахтных п/у
- Неполадки асинхронных трехфазных электродвигателей
- Неполадки обмотки
- Неполадки подшипников
- Неполадки ротора (электродвигатель с короткозамкнутым ротором)
- Неселективные отсечки
- Обо мне
- Общая оценка и область применения максимальной токовой защиты
- Общее устройство ПУ с разрезным барабаном
- Общее устройствои техническая характеристика двухбарабанной и однобарабанной ПМ
- Общие правила проветривания подземных выработок
- Общие санитарные правила
- Обязанности главного инженера рудоуправления
- Обязанности главного механика шахты
- Обязанности главного энергетика шахты
- Обязанности горного диспетчера
- Обязанности заместителя или помощника главного инженера шахты
- Обязанности командира ВГСЧ
- Обязанности машиниста подъема при эксплуатации П/У и текущем ремонте
- Обязанности начальника ПВС
- Обязанности начальника участка, помощника начальника, сменного горного мастера
- Обязанности начальника шахты
- Обязанности ответственного руководителя работ по ликвидации аварий
- Обязанности прочих лиц, участвующих в ликвидации аварии
- Ограничитель скорости ОСЭРП
- Ознакомление с планом ликвидации аварий и проверка знаний
- Освещение лампами, питаемыми от электрической сети
- Основные узлы и детали подъемной машины
- Особенности наладки подземных подъемных установок
- Отсечки с выдержкой времени
- Охрана труда в электроустановках
- Назначение роторных сопротивлений.
- Основные и дополнительные средства защиты в электроустановках до 1000 В. и выше 1000 В.
- Правила пользованием огнетушителем.
- Первая помощь пострадавшим
- Первая помощь при отравлении газами в шахте
- Передвижение и перевозка людей и грузов по наклонным и вертикальным выработкам.
- Перекос фаз. Причины возникновения, устранение, защита.
- Перечень работ при ревизии редуктора РМ-850 со вскрытием крышек и заменой масла
- Персонал для производства взрывных работ и для работ, связанных с хранением взрывчатых материалов
- Персонал для руководства взрывными работами
- Пневматический привод тормоза ПМ (НКМЗ, ЛКУ)
- Поведение максимальной защиты при двойных замыканиях на землю
- Повреждения, возникающие из-за неправильно установленных деталей трансмиссии или неточного выравнивания электродвигателя
- Подъемные машины и лебедки
- Порядок допуска взрывчатых материалов к применению
- Порядок и меры безопасности при работах по техническому обслуживанию вертикальных стволов.
- Порядок приема, отпуска и учета взрывчатых материалов
- Правила обращения с взрывчатыми материалами
- Правила спуска и подъема ВМ по вертикальному стволу
- Правила спуска и подъема людей
- Предупреждение и тушение рудничных пожаров
- Предупреждение падения людей и предметов в горные выработки
- Привод тормоза. Источники каких сил используются в тормозных приводах.
- Приводы к разъединителям
- Принцип работы системы Г-Д (генератор двигатель)
- Принцип схемы тормозной системы ПМ
- Принципиальная схема цепи защиты КПМ
- Прицепные устройства подъемных сосудов
- Причины износа тормозов,муфт включения
- Проверка блокировок наличия тока Дт.
- Проверка правильности включения обмоток. Асинхронные и синхронные двигатели.
- Проверка соосности валов
- Проверка сопротивления изоляции
- Проветривание подготовительных выработок
- Прокладка гибких резиновых кабелей
- Прокладка кабелей в выработках с уклоном более 45 градусов
- Прокладка кабелей в горизонтальных и наклонных выработках
- Профилактика профзаболеваний
- Пружинно-гидравлический привод тормоза
- Пружинно-гидравлический привод тормоза, источники каких сил используются в тормозных приводах
- Пульт управления подземной подъемной машиной ППМ-3
- Пуск ПД в режиме ручного управления
- Работа аварийной кнопки и аварийного ключа
- Разлом вала
- Разъединители
- Ревизия и наладка маслосмазки
- Ревизия и наладка подшипников качения
- Ревизия и наладка подшипников скольжения валов
- Ревизия и наладка редуктора
- Ревизия и наладка соединительных муфт
- Ревизия и наладка тормоза с пружинно-гидравлическим приводом
- Ревизия и наладка щеточного аппарата, коллектора и контактных колец
- Ревизия и наладка электрической части подъемных установок. Распределительные устройства (ру)
- Ревизия канатоведущих шкивов
- Ревизия механических указателей глубины
- Ревизия рычажно-шарнирного механизма
- Ревизия тормозного обода
- Ревизия тормозных колодок
- Ревизия цилиндрических барабанов
- Ревизия, наладка и испытание шахтных подъемных установок
- Регулировка исполнительного органа тормоза
- Реле времени
- Релейная защита
- Ремонтная стволовая сигнализация
- Рудничный воздух
- Рудничный транспорт и подъем
- Руководство по техническому обслуживанию и ремонту шахтных подъемных установок
- Ручные способы искусственного дыхания
- Самоспасатели
- Санитарно-бытовые помещения
- Сбои в работе токосъемных колец ротора
- Сигнальные приборы стволовой сигнализации
- Силовые трансформаторы
- Синхронный двигатель
- Система защит и блокировок на подъемной установке.
- Совершенствование аппаратуры управления малыми шахтными подъемными машинами и лебедками
- Соединение кабелей
- Составление плана ликвидации аварии
- Способы электрического торможения асинхронного двигателя
- Справочное пособие машинисту
- Стационарные подъемные машины и установки
- Сушка электрических машин
- Сушка, измельчение, просеивание и наполнение оболочек взрывчатыми веществами
- Схема разгона двигателя с РТУ и восемью реле ускорений
- Схема разгона двигателя с РТУ и двумя реле ускорения
- Схема разгона двигателя с трехобмоточными реле
- Схема РОС повышенной надежности
- Схема РОС повышенной надежности
- Схема трехфазной защиты с зависимой характеристикой
- Схема трехфазной защиты с независимой выдержкой времени
- Схемы руководств оборудования по подъемам
- Телефонная связь и сигнализация
- Тиристорные выпрямители для динамического торможения асинхронных подъемных машин
- Ток срабатывания защиты
- Токовые реле
- Тормозные устройства, требования предъявляемые к ним.
- Транспортирование ВМ на территории постоянных складов
- Трансформаторы напряжения (ТН)
- Трансформаторы тока (ТТ)
- Трансформаторы, принцип действия,где на ПМ применяются
- Требования безопасности по применению электродинамического торможения
- Требования предъявляемые к переносным заземлениям. Порядок наложения и снятия.
- Требования предъявляемые к подъемным сосудам
- Требования предъявляемые к сосудам работающим под давлением сжатого воздуха
- Тушение подземных пожаров
- Угол девиации каната
- Указательные реле
- Уничтожение взрывчатых материалов
- Уравновешивающие канаты П/У и требования к ним
- Установка эластичных прокладок между фрикционными накладками и тормозными балками
- Устройства избирательного предохранительного торможения и ограничителя тормозного момента
- Устройства с силовыми магнитными усилителями
- Устройство сигнализации и блокировки ляд на проходческой подъемной установке
- Устройство, основанное на гидравлическом подпоре золотника крана предохранительного торможения
- Устройство, основанное на задержке отключения тормозного магнита
- Устройство, принцип действия ПД. Схема подключения его в сеть
- Формы журналов Журнал регистрации инструктирования рабочих
- Характерные неисправности электродвигателей и их устранение
- Хранение взрывчатых материалов на местах работ в подземных выработках
- Центровка вертикального электродвигателя с механизмом
- Цепи защиты подъемной машины и требования предъявляемые к ним
- Чем отличается командоаппарат от командоконтроллера
- Что такое частичное и полное снятие напряжения
- Шахтные воды, питьевое водоснабжение и ассенизация
- Шахтные подъемные машины
- Экзаменационные вопросы машиниста п/у
- Электрические машины и аппараты
- Электрические машины и схемы управления
- Электрические машины.
- Электрические проводки
- Электрический ограничитель скорости типа РОС, принцип работы, назначение, ежесменная проверка ЭОС-3.
- Б.2.1Что входит в понятие стволовая сигнализация, виды сигнализации.
- Параметры электродвигателя
- Электрогидравлические системы HR7K/B и HR9K/B
- Электродинамическое торможение. Устройство с генератором постоянного тока
- Электромагнитные промежуточные реле
- Электромагнитные реле
- Электропневматические регуляторы давления РДБВ
- Электропривод
- Электроустановки
- Элементы BE 100 и BE 200 для дискового Тормоза
- ЭОС-3
Статьи по разделам
- Рубрики: Uncategorized
- Доброго времени суток !
3D FlipBook
- Рудничные подъемные установки
- Справочник механика
- Dräger X-am® 5000 (MQG 0010)
- Маркшейдерские работы при установке и эксплуатации шахтного подъемного оборудования
- Редукторы РМ паспорт
- Единые нормы времени и расценки
- Единые нормы выработки дополнение к УКНВ
- Единые нормы выработки для шахт
- Проверочный расчет тормоза шахтной подъемной машины
- Технологическая инструкция по дефектоскопии деталей тормозных устройств подъемных машин
- Тормозные устройства справочник
- Инструкция по эксплуатации стальных канатов
- Инструкция по эксплуатации стальных канатов в шахтных стволах
- МОНТАЖ И РЕМОНТ ГОРНЫХ МАШИН И ЭЛЕКТРООБОРУДОВАНИЯ
- Горнопроходческие машины и комплексы
- Техническое обслуживание подъемных сосудов
- Должностная инструкция — Машинист подъемной машины первой группы подъемов
- Должностная инструкция — Машинист подъемной машины второй группы подъемов
- Должностная инструкция — Машинист подъемной машины 4-го разряда
- Должностная инструкция — Машинист подъемной машины 3-го разряда
- Цепь защиты подъемного двигателя
- ОПЕРАТИВНЫЕ ПЕРЕКЛЮЧЕНИЯ В ЭЛЕКТРОУСТАНОВКАХ ПРАВИЛА ВЫПОЛНЕНИЯ
- ПРАВИЛА безопасности в угольных шахтах
- Шахтный подъем
- Шахтные подъемные установки
- Средства защиты применяемые в ЭУ
- Программа обучения по электробезопасности
- Билеты Электробезопасность
- 68 вопросов по ПТБЭУП и ПУЭ
- 68 вопросов по ПТБЭУП и ПУЭ
- Погрузка и подъем
- Силовые трансформаторы
- Машины постоянного тока
- Синхронный двигатель
- Асинхронный двигатель
- Канаты. Техническая информация
- Электрические машины и схемы управления
- Шахтные подъемные машины
- Руководство по техническому обслуживанию шахтных п/у
- Библия релейной защиты и автоматики
- Электропривод
- Электрогидравлические системы
- Напочвенные дороги с канатным тяговым органом ДКНЛ1, ДКНУ1, ДКНУ2
- Требования предъявляемые к сосудам работающим под давлением сжатого воздуха
- Стационарные подъемные машины и установки
- Справочное пособие машинисту
- Погрузка и подъем
Горная ЭлектроМеханика
Защитите свой код от исключений NullPointerException с помощью аннотаций Spring Null-Safety Annotations
Исключения NullPointerException
(часто сокращаемые как «NPE») — это кошмар для каждого Java-программиста.
В Интернете можно найти множество статей, объясняющих, как писать нулевой безопасный код. Null-безопасность гарантирует, что мы добавили надлежащие проверки в код , гарантирующие, что ссылка на объект не может быть нулевой, или возможные меры безопасности принимаются, когда объект является нулевым, в конце концов .
Поскольку NullPointerException
является исключением во время выполнения, было бы трудно выяснить такие случаи во время компиляции кода. В системе типов Java нет способа быстро устранить опасные ссылки на нулевые объекты.
К счастью, Spring Framework предлагает некоторые аннотации для решения именно этой проблемы. В этой статье мы узнаем, как использовать эти аннотации для написания нулевого безопасного кода с использованием Spring Boot.
Пример кода
Эта статья сопровождается примером рабочего кода на GitHub.
Аннотации Null-Safety в Spring
В базовом пакете org.springframework.lang
Spring есть 4 таких аннотации:
-
@NonNull
, -
@NonNullFields
, -
@Nullable
и -
@NonNullApi
.
Популярные IDE, такие как Eclipse и IntelliJ IDEA, могут понимать эти аннотации. Они могут предупреждать разработчиков о потенциальных проблемах во время компиляции.
В этом руководстве мы будем использовать IntelliJ IDEA. Давайте узнаем больше с некоторыми примерами кода.
Для создания базового проекта мы можем использовать Spring Initializr. Стартер Spring Boot — это все, что нам нужно, не нужно добавлять никаких дополнительных зависимостей.
Конфигурация IDE
Обратите внимание, что не все инструменты разработки могут отображать эти предупреждения компиляции. Если вы не видите соответствующее предупреждение, проверьте настройки компилятора в вашей среде IDE.
IntelliJ
Для IntelliJ мы можем активировать проверку аннотаций в разделе «Сборка, выполнение, развертывание -> Компилятор»:
Eclipse
Для Eclipse мы можем найти настройки в разделе «Java -> Компилятор -> Ошибки/предупреждения»:
Пример кода
Давайте воспользуемся простым классом Employee
, чтобы понять аннотации:
package io. reflectoring.nullsafety; // импорт класс Сотрудник { Идентификатор строки; Имя строки; Дата присоединения к локальной дате; Строка pastEmployment; // стандартный конструктор, геттеры, сеттеры }
@NonNull
В основном поле id
(в классе Employee
) будет ненулевым значением. Таким образом, чтобы избежать любого потенциального NullPointerException
, мы можем пометить это поле как @NonNull
:
class Employee { @NonNull Идентификатор строки; //... }
Теперь, если мы случайно попытаемся установить значение id
как null в любом месте кода, IDE покажет предупреждение компиляции:
The @NonNull
аннотацию можно использовать на уровне метода, параметра или поля.
В этот момент вы можете подумать: «А что, если класс имеет более одного ненулевого поля?». Не будет ли слишком многословно, если нам придется добавить аннотацию @NonNull
перед каждым из них?
Мы можем решить эту проблему, используя аннотацию @NonNullFields
.
Вот краткое описание @NonNull
:
Аннотированный элемент | Эффект |
---|---|
поле | Показывает предупреждение, когда поле пустое |
параметр | Показывает предупреждение, когда параметр имеет значение null |
метод | Показывает предупреждение, когда метод возвращает null |
упаковка | Неприменимо |
@NonNullFields
Давайте создадим файл package-info.java
, чтобы применить проверки ненулевых полей на уровне пакета. Этот файл будет содержать имя корневого пакета с @NonNullFields
аннотация:
@NonNullFields пакет io.reflectoring.nullsafety; импортировать org.springframework.lang.NonNullFields;
Теперь, , нам больше не нужно аннотировать поля аннотацией @NonNull
. Потому что по умолчанию все поля классов в этом пакете теперь считаются ненулевыми. И мы по-прежнему будем видеть то же предупреждение, что и раньше:
Еще один момент, на который следует обратить внимание, это то, что если есть какие-либо неинициализированные поля, мы увидим предупреждение об их инициализации:
Вот краткое описание @NonNullFields
:
Аннотированный элемент | Эффект |
---|---|
поле | Неприменимо |
параметр | Неприменимо |
метод | Неприменимо |
упаковка | Показывает предупреждение, если какое-либо из полей для примененного пакета пусто |
@NonNullApi
К настоящему моменту вы, возможно, заметили еще одно требование, т. е. иметь аналогичные проверки для параметров метода или возвращаемых значений. Здесь нам на помощь придет @NonNullApi
.
Подобно @NonNullFields
, мы можем использовать файл package-info.java
и добавить аннотацию @NonNullApi
для предполагаемого пакета:
@NonNullApi пакет io.reflectoring.nullsafety; импортировать org.springframework.lang.NonNullApi;
Теперь, если мы напишем код, в котором метод возвращает null:
package io.reflectoring.nullsafety; // импорт класс Сотрудник { Строка getPastEmployment() { вернуть ноль; } //... }
Мы можем видеть, что IDE теперь предупреждает нас о ненулевом возвращаемом значении:
Вот краткое описание @NonNullApi
:
Аннотированный элемент | Эффект |
---|---|
поле | Неприменимо |
параметр | Неприменимо |
метод | Неприменимо |
упаковка | Показывает предупреждение, если какой-либо из параметров или возвращаемых значений имеет значение NULL для примененного пакета |
@Nullable
Но вот загвоздка. Могут быть сценарии, в которых конкретное поле может быть нулевым (независимо от того, насколько сильно мы хотим этого избежать).
Например, 9Поле 0003 pastEmployment может иметь значение NULL в классе Employee
(для тех, кто ранее не работал). Но согласно нашим проверкам безопасности, IDE считает, что это невозможно.
Мы можем выразить свое намерение, используя аннотацию @Nullable
на поле. Это сообщит IDE, что в некоторых случаях поле может быть пустым, поэтому нет необходимости вызывать тревогу. Как предлагает JavaDoc:
Может использоваться вместе с
@NonNullApi
или@NonNullFields
, чтобы переопределить семантику по умолчанию, не допускающую значение NULL, на значение, допускающее значение NULL.
Подобно NonNull
аннотация Nullable
может применяться к методу, параметру или уровню поля.
Теперь мы можем пометить поле pastEmployment
как допускающее значение NULL:
package io. reflectoring.nullsafety; // импорт класс Сотрудник { @Обнуляемый Строка pastEmployment; @Nullable String getPastEmployment() { вернуть прошлую занятость; } //... }
Вот краткое описание @Nullable
:
Аннотированный элемент | Эффект |
---|---|
поле | Указывает, что поле может быть пустым |
параметр | Указывает, что параметр может иметь значение null |
метод | Указывает, что метод может возвращать null |
упаковка | Неприменимо |
Автоматические проверки сборки
До сих пор мы обсуждали, как современные IDE упрощают написание нуль-безопасного кода. Однако, если мы хотим иметь некоторые автоматические проверки кода в нашем конвейере сборки, это также в некоторой степени выполнимо.
SpotBugs (реинкарнация известного, но заброшенного проекта FindBugs) предлагает подключаемый модуль Maven/Gradle, который может обнаруживать запахи кода из-за возможности обнуления. Давайте посмотрим, как мы можем его использовать.
Для проекта Maven нам нужно обновить pom.xml
для добавления подключаемого модуля SpotBugs Maven:
com.github.spotbugs spotbugs-maven-плагин <версия>4.5.2.0версия> <зависимости> <зависимость>com.github.spotbugs местные ошибки <версия>4.5.3версия> зависимость> зависимости> плагин>
После построения проекта мы можем использовать следующие цели из этого плагина:
- цель
Spotbugs
анализирует целевой проект. - цель
check
запускает цельspotbugs
и приводит к сбою сборки, если она находит какие-либо ошибки.
Если вы используете Gradle вместо Maven, вы можете настроить подключаемый модуль SpotBugs Gradle в файле build. gradle
:
зависимости { SpotbugsPlugins 'com.h4xstream.findsecbugs:findsecbugs-plugin:1.11.0' } жуки { версия инструмента = '4.5.3' }
После обновления проекта мы можем запустить проверку с помощью команды gradle check
.
SpotBugs предоставляет несколько правил для обозначения потенциальных проблем путем обработки аннотации @NonNull
во время сборки Maven. Вы можете просмотреть подробный список описаний ошибок.
Например, если какой-либо из методов с аннотацией @NonNull
случайно возвращает значение null, то проверка SpotBugs завершится с ошибкой, подобной этой:
[ОШИБКА] Высокий: io.reflectoring.nullsafety.Employee.getJoiningDate () может возвращать значение null, но объявляется @Nonnull [io.reflectoring.nullsafety.Employee] в Employee.java: [строка 36] NP_NONNULL_RETURN_VIOLATION
Заключение
Эти аннотации действительно полезны для Java-программистов, поскольку они уменьшают вероятность возникновения NullPointerException
во время выполнения. Однако имейте в виду, что это не гарантирует полной нулевой безопасности.
Kotlin использует эти аннотации, чтобы сделать вывод об обнулении Spring API.
Надеюсь, теперь вы готовы писать нуль-безопасный код в Spring Boot!
BrighterScript/null-coalescing-operator.md на master · rokucommunity/brighterscript · GitHub
Оператор объединения с нулевым значением оценивает и возвращает значение левого выражения, если оно не дает результата invalid
; в противном случае он оценивает и возвращает значение правого выражения. Если возвращается левое выражение, правое выражение не вычисляется.
Основное использование
значение = некая переменная ??по умолчанию
преобразуется в:
значение = bslib_coalesce (someVariable, someDefault)
Защита прицела
Иногда BrighterScript требуется для защиты от непреднамеренных проблем с производительностью.
Существует 2 возможных способа транспиляции выражений объединения NULL:
Простой
В этой ситуации BrighterScript определил, что как последующее, так и альтернативное действия не имеют побочных эффектов и не вызывают рандеву. Это означает, что BrighterScript может использовать более простую и более производительную цель переноса.
userId = createdUserId ?? -1
транспилируется в:
идентификатор пользователя = bslib_coalesce (createdUserId, - 1)
Область захвата
В этой ситуации BrighterScript обнаружил, что ваше выражение объединения с нулевым значением может иметь побочные эффекты или может привести к рандеву. BrighterScript создаст выражение-функции с немедленным вызовом, чтобы захватить все указанные локальные переменные. Это делается для того, чтобы выполнять консеквент только в том случае, если условие истинно, и выполнять альтернативу только в том случае, если условие ложно.
Консеквент гарантированно вычисляется ровно один раз, поэтому вы можете быть уверены, что непредвиденных побочных эффектов не возникнет.
имя = userA.name ?? userB.имя
преобразуется в:
имя = (функция (пользователь A, пользователь B) __bsConsequent = userA.name если __bsConsequent <> недопустимо, то вернуть __bsConsequent еще вернуть userB.name конец, если конечная функция)(пользователь А, пользователь Б)
Защита вложенной области
Защита прицела также работает на нескольких уровнях
пользователь = getUser(userId ?? globalSettings.defaultUserId) ?? получитьдефаултюсер()
преобразуется в:
пользователь = (функция (getDefaultUser, getUser, globalSettings, userId) __bsConsequent = getUser((function(globalSettings, userId) __bsConsequent = идентификатор пользователя если __bsConsequent <> недопустимо, то вернуть __bsConsequent еще вернуть globalSettings.