предисловие
Недавно, как инженер iOS / флаттер, из-за временной потребности мне нужно было создать предлагаемый сервер, однако в моей предыдущей трудовой жизни я никогда не занимался разработкой серверов и данных, поэтому. . . немного беспомощный
Но как квалифицированный инженер, я всегда готов драться там, где хочу, я не могу этого сделать, поэтому я помогу тебе это сделать~
настоящий бой
Давайте запишем следующее, я построил сервер, а затем получил данные и сохранил их в локальной базе данных, ряд этапов работы, а также найденные ямы и решения. Эта статья, вероятно, подходит только для новичков в Java и базах данных, таких как я, но для тех, кто столкнулся с такими «вызовами», если вы бог серверов, бог Java, и если вы читаете эту статью, пожалуйста, не стесняйтесь, дайте мне знать если это неправильно ~
Создайте сервер предложений
Готов к работе
- Mac (это означает, что у вас должен быть компьютер, ха-ха, я действительно хочу подчеркнуть, что Mac, который я использую, может отличаться от операции Windows, и все следующие операции берут Mac в качестве примера)
- IntelliJ IDEA
- MySql
IntelliJ IDEA это идетОфициальный сайтВы можете скачать его, но обратите внимание, мы должны скачатьUltimateверсия, и эта версия платная (взломанная версия или метод взлома, Baidu), но если мы хотим заняться разработкой сервера, мы должны использовать эту версию, бесплатная версия не имеет поддержки Spring.
Следующим шагом является установка MySQL. Для его установки рекомендуется использовать Homebrew. Я думаю, что уже устанавливал его на свой компьютер, поэтому я не буду здесь вдаваться в подробности. Это не главное. Дело в том, что не забудьте запомнить пароль, который вы установили.
brew install mysql
Построить сервер
Прежде всего, убедитесь, что у вас уже есть IntelliJ IDEA, которую можно открыть в обычном режиме, и запишите каждый конкретный шаг с помощью скриншотов ниже.
- Создать пустой проект
Введите название проекта
2. add ModulesДалее следует конфигурация по умолчанию (этот шаг может занять слишком много времени и сообщить об ошибке, просто повторите его)
Измените здесь по мере необходимости
Следующие два шага необходимы для настройки
И вот это наполовину сделано
Затем нужно немного подождать.Должно быть скачивание чего-то вроде пакета зависимостей.В правом нижнем углу будет полоса прогресса.После завершения загрузки спускаемся вниз.
- создать контроллер
Разберитесь со следующими тремя аннотациями, если вам интересно, вы можете изучить их подробно, здесь мы сначала научимся их использовать 🙄 @RestController отмечает, что это контроллер
@ResponseBody обернет возвращаемый результат
@RequestMapping соответствует пути запроса переднего плана
package com.example.demo.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyTestController {
@ResponseBody
@RequestMapping("/test")
public String test(){
return "test spring boot!!";
}
}
Вот клавиша быстрого доступаOption+EnterВы можете автоматически импортировать или решать другие проблемы, вы можете попробовать сами~
- запустить сервер
Результаты теста
- другие примечания @RequestMapping
package com.example.demo.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api")
public class MyTestController {
@ResponseBody
@RequestMapping("/test")
public String test(){
return "test spring boot!!";
}
}
6. Сервисный уровень
package com.example.demo.service;
import org.springframework.stereotype.Service;
@Service
public class MyTestService {
public String sayHello(){
return "Hello this is Service";
}
}
Изменения в контроллере
package com.example.demo.controller;
import com.example.demo.service.MyTestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api")
public class MyTestController {
@Autowired
MyTestService myTestService;
@ResponseBody
@RequestMapping("/test")
public String test(){
return "test spring boot!!";
}
@ResponseBody
@RequestMapping("/testService")
public String testService(){
return myTestService.sayHello();
}
}
Ниже представлена структура проекта на данный момент.
Добавим еще один момент, передача параметров, просто посмотрите на код напрямую, что очень похоже на передачу параметров методам в других языках, то есть добавляются какие-то специфичные для spring инъекции аннотаций. Тогда вы поймете, когда вы на самом деле это сделаете
@ResponseBody
@RequestMapping("/testParam1")
public String testParam1(String param1){
return "test param1 is " + param1;
}
@ResponseBody
@RequestMapping("/testParam2")
public String testParam2(String param1, @RequestParam(defaultValue = "30") int param2){
//@RequestParam(defaultValue = "30") 设置param2默认值
return "test param1 is " + param1 + "param2 is " + param2;
}
@ResponseBody
@RequestMapping("/testParam3/{param1}/{param2}")
public String testParam3(@PathVariable String param1, @PathVariable int param2){
//@PathVariable 设置路径变量
return "test param1 is " + param1 + "param2 is " + param2;
}
Проверьте результат:
Метод передачи параметров testParam3 прямой/раздельный, нет необходимости использовать ?key=value&key=value
Сегодня напишу сюда, а потом попрошу другие сервисы получить данные в апдейте, а потом хранить локально~