#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. Это зависит от того, что вы хотите с ними сделать.