каков наилучший способ разработки скелета приложения springboot

#java #spring #spring-boot

#java #spring #пружинный ботинок

Вопрос:

Я пишу приложение springboot, которое должно вычислять оценку ученика. Вы должны прочитать имя учащегося из командной строки и вызвать API, который вернет идентификатор учащегося в формате JSON. Затем я возьму идентификатор студента и вызову другой API, который вернет общее количество оценок студента в формате JSON. Тогда я должен соответствующим образом рассчитать оценку. Вычисление выглядит следующим образом: F =<60, D=<65, C =<75, B=<85, A=<100. Ниже приведен мой гипотетический взгляд на то, как я буду писать проект, я думаю, что знаю, как написать код, который будет функционировать, но я застрял на том, что является лучшим скелетом для проекта или дизайна классов. Ниже, как я думаю, это должно быть написано.

 @Controller
// Rest call to the Student API
public class StudentController {
    private static final Logger log = LoggerFactory.getLogger(ClientController.class);
    private RestOperations rest;
    private Config config;  //to read the URL
    .....
 

     @Controller
// Rest call to the grades API
public class GradsController 
{
    private static final Logger log = LoggerFactory.getLogger(ClientController.class);
    private RestOperations rest;
    private Config config; //to read the URL
    .....
 

 Configuration
@ConfigurationProperties(prefix="api.call")
public class Config {
    private String URL;
    .....
 

    public class Student {
    @JsonProperty("Data")
    private Elements[] elements;
    .......
 

  public class Grads {
        @JsonProperty("Subjects")
        private String[] subjects;
        .......
 

 @Service
public class CalculateGrade {
    private String marks;
    private HashMap <String, Integer> gradeMap;

    CalculateGrade( String marks)
    {
        this.marks = marks;
        this.carName = carName;
        fillMap();
    }
    private void fillMap()
    {
        gradeMap= new HashMap<>();
        gradeMap.put("A",100);
        gradeMap.put("B", 85 );
       ..........
     }
     public String getGrade()
    {
      // do calculations;
    }
 

     @SpringBootApplication 
    @ConfigurationPropertiesScan ("Config") 
    public class MyApplication {

    private static final Logger log = LoggerFactory.getLogger(MyApplication.class);     
    @Autowired  StudentController StudentController;

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

    }
 

Комментарии:

1. Если это ваше мнение о том, как оно должно быть написано, то в чем же на самом деле проблема?

2. моя проблема в скелете проекта, и если есть лучшая структура

Ответ №1:

Для скелета это выглядит вполне разумно. Контроллеры для перевода из Интернета в домен и бизнес-логику в службах домена / приложений (CalculateGrade). Очень похоже на шестиугольную архитектуру («Порты и адаптеры»).

Комментарии:

1. спасибо за ваш вклад. а что вы думаете о хранении оценок в map? было бы разумнее поместить в файл свойств или перечисление?

2. Это зависит от того, что вы хотите с ними сделать.