Пишу программу и хочу использовать аннотацию @Service. Я всегда писал логическую часть в классе, в котором есть аннотация @Controller. Мне сказали, что нужно писать всю логику в классе, в котором есть аннотация @Service, и отсюда нужно присылать данные в контроллер и оттуда - в jsp либо html.
Не знаю, это правильно вообще или нет. Где-то читал, что аннотацию @Service ставят для бизнес-логики. Написал программу точно так же, но логическая часть уже в том классе, в котором была аннотация @Service.
И сразу возникла проблема: не могу сделать return"redirect:/ в контроллере. Я никогда не делал это. Может быть, допустил ошибки или этот @Service вообще нужна для другого решения?
Подскажите пожалуйста, как можно отправить данные в контроллер.
@service
@Service
public class MainService {
@RequestMapping(value = "/", method = RequestMethod.GET)
public String str(ModelMap map) {
map.addAttribute("user", new User());
return "redirect:/index";
}
@Controller
@Controller
public class MainController {
@RequestMapping(value = "/index")
public String mainController(ModelMap modelMap){
modelMap.addAttribute("newUser",new User());
return "test";
}
}
-
Изменил вопрос спустя 3 года НеплохCREAsTIVE– CREAsTIVE2023年08月21日 07:34:11 +00:00Commented 21 авг. 2023 в 7:34
1 ответ 1
Вам правильно сказали, всю бизнеслогику стоит писать в сервисах. В вашем случае, бизнес логика это вот эта строка:
map.addAttribute("user", new User());
Её можно вынести в сервис:
@Service
public class MainService {
public void newUser(ModelMap map) {
map.addAttribute("user", new User());
}
}
А в контроллере вызывать её в соответствующем методе.
@Controller
public class MainController {
@Autowired
MainService mainService;
@RequestMapping(value = "/", method = RequestMethod.GET)
public String str(ModelMap map) {
mainService.newUser(map);
return "redirect:/index";
}
}
-
Спасибо огромноеuser317685– user3176852019年01月12日 19:19:56 +00:00Commented 12 янв. 2019 в 19:19