-->
Показаны сообщения с ярлыком Java. Показать все сообщения
Показаны сообщения с ярлыком Java. Показать все сообщения

Spring IDE

Вообще не понял почему так понравившаяся мне IntelliJ IDEA так недружелюбно относится к программистам, использующим Spring! Может быть, конечно, я просто с чем-то не разобрался, но факт в том, что когда я увидел видео-уроки по Spring'у с использованием IDE Eclipse, то первая мысль была: "А что, так можно было?!"

Что же так меня впечатлило.
Основное - это работа с XML-файлами настроек Sping, коих в этом Spring'е предостаточно. Кстати, единственное объяснение, которое я могу найти, почему в IntelliJ IDEA нет аналогичного функционала, - работа со Spring с помощью аннотаций.
Приведу наглядные примеры.

1. Различное дружественное отображение XML-файлов. На примере pom-файла Mavena.
"Голый" pom-файл:
Обратите внимание на закладки внизу. Можно отобразить этот файл в виде такой формы настроек:
Даже на первый взгляд видно, как удобно настраивать или изменять параметры pom-файла.
Можно, например, визуально увидеть все зависимости:
Также можно посмотреть так называемый эффективный pom-файл.

2. Еще интереснее с XML-файлами Spring.
Естественно, можно увидеть и редактировать непосредственно текст XML-файла:
Либо в режиме различных форм отображения, например:
Можно даже увидеть графическое отображение бинов:
И самое, на мой взгляд, полезное - добавление необходимых схем, что для новичков вообще не понятно, а опытных программеров заставляет тупо копи-пастить:


Существуют два варианта установки Eclipse для работы со Spring: "стоковый" Eclipse + необходимые плагины, либо установка STS (Spring Tool Suite) - по сути тот же самый Eclipse уже с необходимыми плагинами и различными преднастройками.

Любителям IntelliJ IDEA могу на данный момент посоветовать только создавать проект Spring в Eclipse, а затем работать с ним в IntrlliJ IDEA. Хотя сам таким образом еще не пробовал, но очевидных сложностей не вижу.

GitHub удаление папки

После сохранения проекта на GitHub.com может понадобиться удалить файлы и/или директории, которые не нужны потенциальным пользователям вашего проекта. Например, папка .idea из IntelliJ IDEA, в которой хранятся настройки именно вашей среды разработки, и они совсем не нужны кому-то в нагрузку с проектом.

WEB-интерфейс GitHub'а не позволяет удалять отдельные элементы проекта непосредственно.
Для этого у себя в консоли исключаем нужную нам папку (файл) из локального git'а:
# git rm -r one-of-the-directories
После этого делаем коммит:
# git commit -a -m "Remove duplicated directory"
 И заливаем на GitHub:
# git push origin <your-git-branch> (обычно 'master', но не обязательно)
Для того, чтобы предотвратить загрузку определенных папок и файлов проекта в репозиторий git'а необходимо пользоваться .gitignore файлом.
Например, для IntelliJ IDEA существует плагин ".ignore", упрощающий данную работу.

MySQL ver.6 (Java)

Подключение и использование MySQL версии 6 в Java-проектах изменилось по сравнению с версией 5, которые обычно приводятся в обучающих примерах, что вызывает ошибки и, как следствие, ступор у новичков.

Варианта два:
1) использовать драйвер 5-й версии, или
2) читать дальше выдержку из данного хаба ;-)

Начнем с того, что убедимся, какая версия mysql прописана в dependencies:

<dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>6.0.6</version>
        </dependency>
</dependencies>

Первое что я сделал — это попал на FabricMySQLDriver, он напрочь отсутствует в новых классах работающих с 6-ым MySQL. 

Получил ошибку «cannot resolve symbol FabricMySQLDrive».

Спустя 30 минут нашлось решение:

Connection connection = null;
Driver driver;

try   {
       driver = new com.mysql.cj.jdbc.Driver();
       DriverManager.registerDriver(driver);
       }
       catch (SQLException e1) {
                System.out.println("Драйвер не зарегистрировался");
  return;
 }


Все уже заметили что FabricMySQLDriver уже не работает, а старая библиотека com.mysql.jdbc.Driver насильно была заменена на аналогичную com.mysql.cj.jdbc.Driver

Во второй части было веселее. 

try {
 connection = DriverManager.getConnection(URL, USER, PASSWORD);
  if (!connection.isClosed())
   System.out.println("Соединение установлено");
 }catch (SQLException ex){
   System.err.println("Соединение не установлено");
   ex.printStackTrace(); // Понадобился, чтобы отловить исключения, скрытые выводом на экран предупреждения
   return;
  } finally {
   if (connection != null) connection.close();
  }

Сначала я получил ошибку: verifyServerCertificate, где IDEA ругалась на отсутствие защищенного SLL соединения. Решение пришло с портала SOF и англоязычного форума по mysql:

public static final String URL = "jdbc:mysql://localhost:3306/mydb?autoReconnect=true&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=UTC";
public static final String USER = "root";
public static final String PASSWORD = "root";

autoReconnect=true&useSSL=false — эта часть решила вопрос с необходимостью SSL, но следом я вилась ошибка:

java.sql.SQLException: The server time zone value 'Russia TZ 2 Standard Time' is unrecognized or represents more than one time zone

Вторая часть кода в String URL: useLegacyDatetimeCode=false&serverTimezone=UTC — решила и эту проблему. 

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