Структурирование кода при использовании Spring Boot

Spring Boot не требует какой-либо конкретной компоновки кода для работы. Тем не менее, есть некоторые лучшие практики, которые помогают.

Использование “default” пакета

Когда класс не включает объявление пакета, он считается находящимся в “default package”. Использование “default package”, как правило, не рекомендуется, и его следует избегать. Это может вызвать особые проблемы для приложений Spring Boot, которые используют аннотации @ComponentScan, @ConfigurationPropertiesScan, @EntityScan или @SpringBootApplication, поскольку каждый класс из каждого jar читается.

Рекомендуется следовать Java-соглашениям об именах пакетов и использовать обратное доменное имя (например, com.example.project).

Нахождение основного класса приложения

Как правило, рекомендуется размещать основной класс приложения в корневом каталоге над другими классами. Аннотация @SpringBootApplication часто размещается в вашем основном классе и неявно определяет базовый “search package” для определенных элементов. Например, если вы пишете приложение JPA, пакет аннотированного класса @SpringBootApplication используется для поиска элементов @Entity. Использование корневого пакета также позволяет сканировать компоненты только для вашего проекта.

Если вы не хотите использовать @SpringBootApplication, аннотации @EnableAutoConfiguration и @ComponentScan, которые он импортирует, определяют это поведение, поэтому вы также можете использовать их.

Следующий листинг показывает типичный макет:

com
 +- example
     +- myapplication
         +- Application.java
         |
         +- customer
         |   +- Customer.java
         |   +- CustomerController.java
         |   +- CustomerService.java
         |   +- CustomerRepository.java
         |
         +- order
             +- Order.java
             +- OrderController.java
             +- OrderService.java
             +- OrderRepository.java

Файл Application.java объявляет метод main вместе с базовым @SpringBootApplication следующим образом:

package com.example.myapplication;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки