Java Best Practice
Обзор курса
Обзор курса. Продолжение
Apache Ant
Apache Maven
Ключевые преимущества
Установка
Проверка установки
Создание тестового проекта
Схема
Артефакт
Координаты артефакта
Примеры maven координат
POM файл
Декларативный стиль в POM
Репозитории
Жизненный цикл
Выполнение фаз жизненного цикла
Junit dependency
Что такое Unit-тесты
Библиотека Junit (Версия 4)
Аннотации JUnit
Подключение библиотеки логирования
Уровни логирования
Настройки
Использование логирования
Пример конфигурации
Принципы Spring Framework
1.60M
Category: programmingprogramming

Java Best Practice. Лучшие практики разработки на Java

1. Java Best Practice

Лучшие практики разработки на Java

2. Обзор курса

Инструменты автоматизированной сборки
проектов (Ant, Maven)
Обзор технологии Unit-тестирования
(Junit)
Технологии логирования (Log4J, Slf4J,
LogBack)
Создание «заглушек» (Mockito)
Введение в Spring
MVC Паттерн (Spring MVC)
billing.ru
2

3. Обзор курса. Продолжение

Обзор тeхнологии ORM
Создание DAO-объекта (JDBC, MyBatis)
Механизмы безопасности (Spring Security)
Создание веб-сервисов SOAP и REST
(Apache CXF)
Мониторонг (JMX)
billing.ru
3

4.

4

5. Apache Ant

Apache Ant (англ. ant — муравей
и акроним — «Another Neat Tool») –
утилита для автоматической сборки
проекта
Императивная сборка проекта
Платформонезависимость (Использует
JRE)
Управление процессом сборки на основе
сценария, записанного в файле build.xml
billing.ru
5

6.

6

7.

8. Apache Maven

Инструмент для автоматизации сборки
проектов: компиляции, создания jar,
создания дистрибутива программы,
генерации документации
Обеспечивает декларативную сборку.
Информация о проекте описывается на
языке POM(Project Object Model) и
содержится в файле pom.xml
Maven придерживается принципа
«соглашения прежде конфигурации»
billing.ru
8

9. Ключевые преимущества

Автоматическое управление
зависимостями
Огромный, поддерживаемый в
актуальном состоянии репозиторий
артефактов
Maven – наиболее широко
распространенный инструмент для сборки
Поддержка большинством современных
IDE (Eclipse, IntelliJ IDEA …)
billing.ru
9

10. Установка

Требуется наличие на машине JDK
версии >= 1.5
Дистрибутив можно скачать с сайта
http://maven.apache.org
Прописать переменную окружения
M2_HOME
Добавить путь %M2_HOME%/bin в PATH
Для запуска используется команда mvn
billing.ru
10

11. Проверка установки

billing.ru
11

12. Создание тестового проекта

mvn archetype:generate
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 254:
Choose org.apache.maven.archetypes:maven-archetype-quickstart version:
1: 1.0-alpha-1
2: 1.0-alpha-2
3: 1.0-alpha-3
4: 1.0-alpha-4
5: 1.0
6: 1.1
Choose a number: 6:
Define value for property 'groupId': : com.peterservice
Define value for property 'artifactId': : mavenTest2
Define value for property 'version': 1.0-SNAPSHOT: :
Define value for property 'package': com.peterservice: :
Confirm properties configuration:
groupId: com.peterservice
artifactId: mavenTest2
version: 1.0-SNAPSHOT
package: com.peterservice
Y: : Y
billing.ru
12

13. Схема

billing.ru
13

14. Артефакт

Что такое Артефакт? Да все что угодно,
например (jar,war, и.т.п.)
Результатом работы Maven является
создание (построение) артефакта, а так
же ряд дополнительных действий над ним
(тестирование, инсталляция в локальный
репозиторий, deployment)
Сам артефакт зависит от других
артефактов (нашихи внешних, плагинов
maven)
billing.ru
14

15. Координаты артефакта

groupId
artifactId
[packaging] default jar
Version в формате mmm.nnn.bbb-ssssss-dd
, необязательными являются поля ssssss
(спецификатор SNAPSHOT,RELEASE и т.п.)
и dd (номер сборки)
[classifier]
groupId:artifactId[:packaging]:version[:classifier]
billing.ru
15

16. Примеры maven координат

log4j
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
spring
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>3.1.0.RELEASE</version>
billing.ru
16

17. POM файл

POM - Project Object Model, xml файл,
обычно называется pom.xml
POM файл содержит описание нашего
проекта (декларативный стиль!) и все
специфические его настройки.
billing.ru
17

18. Декларативный стиль в POM

Основная концепция maven в том, что мы используем
лучшие практики разработки (best practices) с
зафиксированными правилами и настройками по
умолчанию. Maven использует наследование,
агрегирование и управление зависимостями при
описании проекта в POM файле.
Пример стандартного размещения файлов java проекта:
billing.ru
Build директория по умолчанию - target
18

19. Репозитории

Репозиторий maven это файловое
хранилище с метаинформацией и
быстрым поиском и доступом
local ( находятся в ~/.m2/repository )
remote (например, стандартный
http://repo1.maven.org/maven2 или
внутренний репозиторий компании,
например, Nexus)
используются для хранения и получения
зависимостей (dependencies) проекта и
плагинов maven
billing.ru
19

20. Жизненный цикл

billing.ru
20

21. Выполнение фаз жизненного цикла

mvn [ имя фазы ]
При выполнении определенной фазы
автоматически выполняются все
предыдущие фазы
mvn test (выполняется в папке, где
находится pom.xml)
validate -> compile -> test
сообщения об ошибках в папке
target\surefire-reports\
billing.ru
21

22. Junit dependency

billing.ru
22

23.

billing.ru
23

24.

Обзор технологии Unit-тестирования
24

25. Что такое Unit-тесты

Unit-тест – код, написанный
разработчиком, который проверяет
небольшой кусок функциональности
тестируемого кода.
billing.ru
25

26.

26

27.

Paying-as-you-go vs. Having a Single Testing Phase
billing.ru
27

28. Библиотека Junit (Версия 4)

Тестовый класс может иметь любое
название. Частая практика заканчивать
имя класса на Test (CalculatorTest)
В Junit 4 не нужно наследовать от
TestCase
Тестовый метод должен быть помечен
аннотацией @Test и может иметь
произвольное имя
Хорошей практикой считается называть
методы, начиная с test (testAdd)
billing.ru
28

29.

29

30. Аннотации JUnit

@BeforeClass/@AfterClass (метод должен быть
public и static): Метод помеченный такой аннотацией
выполняется один раз перед выполнением всех
тестовых методов
@Before/@After (метод должен быть public):
Метод помеченный такой аннотацией выполняется
до/после каждого тестового метода
@Test (expected = RuntimeException.class):
Аннотация говорит о том, что в тесте ожидается
exception типа Runtime, если в тесте exception не будет
выброшен, то тест будет провален
@Test (timeout = 100): Тест будет провален, если он
будет выполняться боллее 100 миллисекунд
@Ignore (value = "Ignore"): пропустить тест (не
выполнять
его)
billing.ru
30

31.

billing.ru
31

32.

32

33. Подключение библиотеки логирования

billing.ru
33

34. Уровни логирования

The six logging levels used by Log are (in
order):
1. trace (the least serious)
2. debug
3. info
4. warn
5. error
6. fatal (the most serious)
billing.ru

35.

35

36. Настройки

Конфигурация logback находится в
файлах:
logback-test.xml
logback.xml
Если найти данные файлы не удается, то
используется настройка по-умолчанию
(вывод информации в консоль)
billing.ru
36

37. Использование логирования

billing.ru
37

38. Пример конфигурации

billing.ru

39.

billing.ru
39

40.

40

41.

41

42.

42

43. Принципы Spring Framework

Dependency Injection
Aspect-Oriented programming
billing.ru

44.

44
English     Русский Rules