Внезапно я чувствую, что дни без Сяо Вана такие пустые. Как это сделать? После долгих размышлений обойдемся написанием статей, в процессе активного творчества, возможно, удастся избавиться от горьких мыслей Сяо Вана. Что написать?
Подумав об этом, давайте напишем, как использовать пул соединений HikariCP в Spring Boot. Ведь в реальных боевых проектах JDBC использовать нельзя, а пул соединений необходим. HikariCP считается очень быстрым, и пул соединений с базой данных по умолчанию в Spring Boot 2 также был переключен с Tomcat на HikariCP (можете ли вы изменить вонючие жуки, которые любят новое и ненавидят старое).
Адрес GitHub HikariCP выглядит следующим образом:
GitHub.com/Бретт Шерсть Доктор…
В настоящее время звездочка составляет 12 тысяч, а количество использований достигло 43,1 тысячи. Давайте посмотрим на его представление о себе.
Это невозможно. Хикари происходит от японского, что означает "свет". Означает ли это скорость со скоростью света? Честно говоря, чтение введения кажется таким же захватывающим и шокирующим, как рукопожатие с моей богиней «Тан Вэй».
Поскольку Spring Boot 2 по умолчанию использует HikariCP, его довольно легко использовать, и для этого требуется всего несколько простых шагов.
01. Инициализируйте базу данных MySQL
Поскольку вы хотите подключиться к MySQL, вам необходимо установить службу MySQL на свой компьютер (пока пропустите эту статью) и создать базы данных и таблицы.
CREATE DATABASE `springbootdemo`;
DROP TABLE IF EXISTS `mysql_datasource`;
CREATE TABLE `mysql_datasource` (
`id` varchar(64) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
02. Создайте проект Spring Boot с помощью Spring Initlallzr
Создать проект Spring Boot очень просто, через Spring Initlallzr (start.spring.io/) Это хорошо.
Проверьте три зависимости Web, JDBC и MySQL Driver.
1) Web указывает, что проект является веб-проектом, что нам удобно для работы напрямую через URL-адрес.
3) Драйвер MySQL: Драйвер, который подключается к серверу MySQL.
5) JDBC: Spring Boot 2 использует HikariCP по умолчанию, поэтому HikariCP по умолчанию добавит зависимости к spring-boot-starter-jdbc, поэтому нет необходимости активно добавлять зависимости HikariCP.
P.S. Как это доказать? После успешного импорта проекта в файле pom.xml нажмите и удерживайте левую кнопку мыши + клавишу Ctrl, чтобы получить доступ к узлу зависимости spring-boot-starter-jdbc, вы можете просмотреть информацию о зависимости HikariCP в файле spring-boot- файл start-jdbc.pom.
После выбора параметров вы можете нажать кнопку [Создать], чтобы сгенерировать инициализированный проект Spring Boot. Сгенерированный пакет представляет собой сжатый пакет, который необходимо распаковать перед импортом в IDE.
03. Отредактируйте файл application.properties
После успешного импорта проекта подождите, пока Maven загрузит зависимости, а затем отредактируйте файл application.properties, чтобы настроить информацию об источнике данных MySQL.
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/springbootdemo?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
Есть ли ощущение дежа вю (иПредыдущийконфигурация источника данных точно такая же)? Зачем? Ответ всем дан — дефолт, дефолт, дефолт, важные вещи говорить трижды, Spring Boot 2 по умолчанию использует пул соединений HikariCP.
04. Отредактируйте проект Spring Boot
Чтобы облегчить нам просмотр информации о подключении HikariCP, мы отредактировали класс SpringBootMysqlApplication и добавили следующее содержимое.
@SpringBootApplication
public class HikariCpDemoApplication implements CommandLineRunner {
@Autowired
private DataSource dataSource;
public static void main(String[] args) {
SpringApplication.run(HikariCpDemoApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
Connection conn = dataSource.getConnection();
conn.close();
}
}
HikariCpDemoApplication реализует интерфейс CommandLineRunner, который позволяет нам загружать некоторые данные или выполнять некоторые действия при запуске проекта, например, мы пытаемся установить соединение с источником данных через объект DataSource, чтобы мы могли видеть информацию о соединении HikariCP. в информации журнала. В интерфейсе CommandLineRunner есть метод, который нужно реализовать, что мы и видимrun()
метод.
Путем отладки мы можем увидеть, что в процессе выполнения проекта тип bean dataSource — HikariDataSource.
05. Запустите проект Spring Boot
Далее мы непосредственно запускаемHikariCpDemoApplication
class, такой проект Spring Boot запускается успешно.
Информация о подключении объекта HikariDataSource будет напечатана. То есть конфигурация пула соединений HikariCP включена. Сделайте себе комплимент.
06. Почему Spring Boot 2.0 выбирает HikariCP в качестве пула соединений с базой данных по умолчанию
Есть несколько тестовых результатов, доступных для сравнения HikariCP с другими платформами пула соединений (например, *c3p0,dbcp2,tomcat*ивибур) производительность. Например, команда HikariCP опубликовала следующие бенчмарки (доступныздесьчтобы получить исходный результат):
Чтобы доказать свою лучшую производительность, команда HikariCP специально выбрала несколько фонов для сравнения. К сожалению, существуют традиционные пулы соединений, такие как c3p0, dbcp2, tomcat и т. д., которые служат фоном.
На картинке выше мы можем почувствовать смущение фона, HikariCP выделяется из толпы. HikariCP так хорош по следующим причинам:
1) Оптимизация на уровне байт-кода: Требуется, чтобы скомпилированный байт-код был минимальным, чтобы кэш ЦП мог загрузить больше программного кода.
Фрагмент кода до оптимизации HikariCP:
public final PreparedStatement prepareStatement(String sql, String[] columnNames) throws SQLException
{
return PROXY_FACTORY.getProxyPreparedStatement(this, delegate.prepareStatement(sql, columnNames));
}
Оптимизированный HikariCP фрагмент кода:
public final PreparedStatement prepareStatement(String sql, String[] columnNames) throws SQLException
{
return ProxyFactory.getProxyPreparedStatement(this, delegate.prepareStatement(sql, columnNames));
}
Единственная разница между приведенными выше двумя фрагментами кода заключается в том, что ProxyFactory заменяет PROXY_FACTORY, а измененный байт-код сокращает на 3 строки инструкций по сравнению с тем, что было до оптимизации. Для конкретного анализа обратитесь к Wiki HikariCP.Документация.
2) Используйте пользовательский список (FastStatementList) вместо ArrayList, чтобы избежатьget()
проверьте диапазон, когдаremove()
при сканировании от начала до конца.
07. Спасибо
Итак, читатели и друзья, статья, которая обещала Сяо Вану, наконец-то закончена.Здесь вы видите лучших программистов, именно вы получаете повышение и прибавку к зарплате.👍. Если вы не думаете, что это весело, и хотите увидеть больше, вы можете отметить GitHub второго брата【itwanger.github.io], эта статья была включена.
PS: исходный код, поддерживающий эту статью, был загружен на GitHub [SpringBootDemo.SpringBootMysql].
Оригинал это не просто, если вы чувствуете себя немного легко, пожалуйста, не так ли.какЕсли вы хотите впервые увидеть обновленные статьи второго брата, отсканируйте QR-код ниже и подпишитесь на официальный аккаунт Silent King Er. До встречи в нашей следующей статье!