Рекомендуемые библиотеки для разработки Java

Java задняя часть Java EE
Рекомендуемые библиотеки для разработки Java

мне 3 года,один годCRUDдесятилетний опытmarkdownпрограммист👨🏻‍💻

Сегодня поговорим о том, что ускоряет разработку:Инструментарий,LombokиОбщая библиотека

01. Что такое набор инструментов

По сути, в каждом проекте есть пакет с именемutils. Этот пакет специально содержит классы инструментов наших собственных проектов, такие как общиеDateUtils,HttpUtils,Collections

Так называемые Utils:Мы часто используем эту штуку, но исходный API не прост в использовании, поэтому мы инкапсулируем его как более общий метод.

Если вы новичок, много раз сталкиваясь с таким похожим классом инструментов, вы не будете напрямую писать его сами, а сначала пойдете в поисковик, чтобы его найти. Найдя его, кажется, что я могу только одинctrl+c,Одинctrl +vвладетьmainМетод первый, получить некоторые тестовые данные, чтобы увидеть, может ли он работать.

Если это может работать, дайте ему имя и поместите его вutilsпод пакет. После одной операции я обнаружил, что эта операционная осанка идеальна!

Как всем известно, инструменты, которые вам нужныСкорее всегоЛюди уже написали соответствующееjarПакет гораздо надежнее, чем код блога, найденный поисковиком.

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

02. Рекомендации по набору инструментов JAVA

В области Java есть два хорошо известных в отрасли инструментария:commonsиguava

Набор инструментов, поддерживаемый китайцами:Hutool

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

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

Не повторяй колесо, не повторяй колесо, не повторяй колесо.

Я выложу ссылки на эти инструменты🔗 Если вы не знаете об этом, то предлагаю вам взглянуть

я перехватилhutoolЧасть информации в документе можно немного пощупать, лично я считаю ее относительно полной:

модуль вводить
hutool-aop Инкапсуляция динамического прокси-сервера JDK, обеспечивающая поддержку аспектов без IOC
hutool-bloomFilter Фильтрация Блума, которая обеспечивает некоторую фильтрацию Блума алгоритмов хеширования.
hutool-cache Простая реализация кэша
hutool-core Core, включая операции Bean, даты, различные утилиты и т. д.
hutool-cron Модуль задач синхронизации, предоставляющий задачи синхронизации, такие как выражения Crontab.
hutool-crypto Модуль шифрования и дешифрования, обеспечивающий инкапсуляцию симметричного, асимметричного и дайджест-алгоритма.
hutool-db Обработка данных после инкапсуляции JDBC на основе идеи ActiveRecord
hutool-dfa Поиск по нескольким ключевым словам на основе модели DFA
hutool-extra Модули расширения, инкапсулирующие третьи стороны (движок шаблонов, электронная почта, сервлет, QR-код, эмодзи, FTP, сегментация слов и т. д.)
hutool-http Пакет HTTP-клиента на основе HTTPURLCONNECTION
hutool-log Бревенчатый фасад, который автоматически идентифицирует бревенчатую реализацию
hutool-script Инкапсуляция выполнения скрипта, например Javascript
hutool-setting Более мощный файл конфигурации настроек и пакет свойств
hutool-system Инкапсуляция вызова системных параметров (информация JVM и т. д.)
hutool-json Реализация JSON
hutool-captcha Реализация кода подтверждения изображения
hutool-poi Упаковка для Excel и Word в POI
hutool-socket Инкапсуляция сокетов NIO и AIO на основе Java
hutool-jwt Реализация пакета JSON Web Token (JWT)

03. ЛОМБОК

Я наткнулся на Ломбок как на инструмент во время стажировки. Первое впечатление, которое он произвел на меня, было: мне больше не нужно самому генерировать методы set/get.

На самом деле, после использования IDE генерация методов set/get — это вопрос сочетания клавиш, но всякий раз, когда мы хотим добавить/удалить/изменить свойства класса, нам нужно сгенерировать дополнительный для этих изменений. Однако, похоже, это не имеет значения. Ведь работы по добавлению/удалению/изменению не так уж и много.

На самом деле, Lombok может делать больше, чем просто устанавливать/получать методы, и после его использования я все еще рекомендую его. рисунок@Builder,@Slf4j,@DataЭти аннотации часто используются в моих проектах.Если вы еще не знаете о Ломбоке, то можете зайти на его официальный сайт и посмотреть.

проект Lombok.org/features/ali…

Кому-нибудь интересно, как Ломбок это делает? Друг в группе однажды столкнулся с этим вопросом интервью: Вы знаете, каков принцип Ломбока?

Это моя первая статья из цикла "Онлайн-интервьюер"аннотация"Поговорили. На самом деле это не особо сложно, пока мы можем разобраться с общими этапами компиляции Java и базовыми знаниями об аннотациях, мы можем ответить на этот вопрос.

  1. Аннотации имеют жизненный цикл@RetentionЕсть три константы: SOURCE, CLASS и RUNTIME.Аннотация с использованием Lombok — это этап SOURCE.
  2. .javaКогда файл скомпилирован, его можно разделить на несколько шагов после небольшого упрощения: синтаксический анализ -> семантический анализ ->Обработка аннотаций-> файл класса
  3. JDK предоставляет Hook. Если мы хотим делать вещи, связанные с аннотациями, во время компиляции, мы можем наследовать AbstractProcessor и реализовать метод процесса (это то, что делает Lombok)

04. JSON-библиотека

Теперь разработка бэкенда на Java практически неотделима от JSON, поэтому нам нужно иметьJSON-библиотекаПомогите нам сделать сериализацию и десериализацию

  • Взаимодействие между внешним и внутренним интерфейсами в основном осуществляется в формате JSON.
  • Иногда для удобства мы также напрямую конвертируем данные в JSON для хранения (хранилищем здесь может быть MySQL, HBase, Redis и т.д.)
  • ...

Написано здесь, я просмотрел свои предыдущие учебные заметки в колледже. Когда я впервые изучил JSON, я следил за видео, чтобы изучить Spring и Strtus2, оба из которых имеют встроенные библиотеки синтаксического анализа JSON. На моем тогдашнем уровне мне было несложно научиться настраивать API по видео, поэтому я не воспринимал это всерьез.

Неожиданно в то время видеоурок также научил меня: Если выйти из среды Spring и Struts2, как легко манипулировать JSON, а затем вclasspathрешительно введенjson-libСумка... Оглядываясь на записи из предыдущего университета, она действительно полна воспоминаний...

Без дальнейших церемоний, давайте вернемся к настоящему. Теперь бэкэнд Java обычно использует больше библиотек JSON:fastjson,GsonиJackson

Я использовал его в компанииFastJsonболее,API очень прост в использовании и удобен для повседневного использования.. Тем не менее, мне когда-либо приходилось принудительно обновлять версию fastjson! Это должно быть лет 19. В то время команда безопасности сказала нам, что нам нужно принудительно обновить версию fastjson, вероятно, потому, что fastjson имеет лазейки и должен быть обновлен. Как пользователь библиотеки, у нас нет другого выбора, кроме как обновить ее.

В результате в течение нескольких дней. Команда безопасности подтянула другую группу и сказала, что все еще необходимо обновить версию xxx или выше.С ранее обновленной версией все еще есть проблемы... Команда также столкнулась с другими ямами, чтобы обновить версию fastjson, и это все равно раздражало.

В интернете также много статей, сравнивающих эти JSON-библиотеки (основные показатели — производительность и стабильность), и заинтересованные друзья могут их прочитать.

Однако проект austin по-прежнему выбирает fastjson в качестве основной библиотеки сериализации для JSON (Будьте более инклюзивными)

05. HTTP-библиотека

Изначально я забыл о библиотеке HTTP. Но как раз когда я собирался реализовать функцию отправки текстовых сообщений, я вдруг вспомнил, что часто используется HTTP! Поэтому я поспешил добавить его перед отправкой статьи.

Я не знаю, как вы себя чувствовали, когда впервые использовали Java для вызова HTTP. На мой взгляд, я чувствую, что это слишком сложно, и настроить HTTP действительно хлопотно! Позже, после работы, в проекте уже есть большие ребята, которые инкапсулировали HTTP. Но иногда я чувствую, что HTTP-вызовы настолько сложны (эй, все виды информации заголовка, случайно установленные неправильно, это полдня)

Но несмотря ни на что, HTTP-вызовы очень распространены, и многие компании почти всегда предоставляют HTTP-вызовы для своих внешних интерфейсов. Например, мы вызываем API Tencent для отправки сообщений WeChat, обращаемся к различным поставщикам каналов для отправки коротких сообщений и так далее.

Давайте сначала вернемся к библиотеке HTTP. В экосистеме Java библиотеки HTTP можно условно разделить на три категории:

  • HttpURLConnection
  • Apache HttpClient
  • OkHttp

HttpURLConnection — это оригинальная HTTP-библиотека, предоставляемая JDK. Она не реализует пул соединений HTTP (пул соединений по-прежнему очень важен, и я не буду здесь слишком подробно объяснять концепцию пула). Все HTTP-библиотеки, которые я использовал в предыдущих проектах, были инкапсулированы на основе Apache HttpClient (качество продуктов Apache также гарантировано), а OkHttp можно назвать восходящей звездой (теперь HTTP-библиотеки на Android в основном основаны на OkHttp). )

Как правило, когда мы используем эти библиотеки инструментов HTTP, нам нужно писать Utils на исходной основе, чтобы упростить вызов HTTP.В среде Utils есть различные наборы инструментов:

  • Например, упомянутый вышеHutoolна родномHttpURLConnectionИнкапсулировать (но его инкапсуляция - бесполезный пул потоков)
  • Собственная продукция компании SquareOkHttpВторой пакет с открытым исходным кодомRetrofit(Это часто используется на Android)
  • Доступно в среде SpringRestTemplateНесколько способов доступа к удаленным службам Http (по умолчанию нет пула потоков, но вы можете использоватьApache HttpClientиOkHttpупаковать его вRestTemplate
  • Предоставляется в среде SpringCloudOpenFeignА затем вызовите службу HTTP
  • Внутренняя библиотека инструментов HTTPForest: правильноHttpclientиOkHttpинкапсулировать
  • ...

На этот раз я выбираюOkHtppкак http-библиотека Остина

ПочемуOkHtpp? ждать с нетерпением,OkHtppКак Http-библиотека, она действительно стала эталоном (по крайней мере, Android популярен, а Okhttp используется многими компаниями в составе SDK как зависимость Http-библиотеки). В весенней средеRestTemplateОн не очень прост в использовании, я не использовал SpringCloud для этого проекта, поэтому, естественно, я его не использовал.OpenFeign.RetrofitОн больше используется на Android (бэкенд на Java встречается относительно редко).

поэтому я выбралOkHttp.

06. Резюме

Эта статья о наборе инструментов, используемых в проекте austin.Те, кто уже понимает, могут почувствовать себя немного водянистыми после прочтения, да это и не нужно.

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

Я думаю, что, читая эту статью, должны быть некоторые друзья, которые работали, которые не слышали о ломбоке или гуаве (Коммонс должен был использовать его более или менее и, возможно, использовал его), но я не знаю, есть ли специальная библиотека классов инструментов Apache).

На самом деле частота использования таких наборов инструментов в проектах будет очень высокой.Использование этих инструментов сделает код нашего проекта более лаконичным.Читаемость кода и ремонтопригодность очень важны для проекта.

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

Должно быть много наборов инструментов, которые я еще не знаю, но они очень полезны. Пожалуйста, порекомендуйте их в области комментариев! ! ! ЭтоОстин проектТретья статья была обновлена ​​до 11 статей, добро пожаловать в мой темп, чтобы сделать проект вместе!

Обратите внимание на мой публичный аккаунт WeChat【Java3y】Давайте поговорим о другом![Онлайн-интервьюер + написание Java-проектов с нуля]Непрерывное высокоинтенсивное обновление! попросить звезду! !Оригинал это не просто! ! Проси три! !

Ссылка на гите:gitee.com/austin

Ссылка на гитхаб:github.com/austin