@Service @Controller java spring

141
07 августа 2019, 11:20

Здравствуйте пишу программу и хочу использовать @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";
    }
}
Answer 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";
    }
}
READ ALSO
Открыть изображения в ListView из БД

Открыть изображения в ListView из БД

В БД сохранены ссылки на исображения которые локально хранятся на устройствеПри открытии лист вью я использую кастомный адаптер который...

121
Как получить класс из переменной и создать новый объект этого класса

Как получить класс из переменной и создать новый объект этого класса

Имеется запись вида: List list; В абстрактном классеВ наследниках через конструктор, я его инициализирую

122
Как связать бэкэнд и фронтэнд через nginx

Как связать бэкэнд и фронтэнд через nginx

написал учебное приложение: бэк на java(Spring boot), а фронт на angularjsСейчас пытаюсь запустить приложение, томкэт запускается на порту 8080

121
Перестал работать android studio emulator - “Устройство, подключенное к системе, не работает”

Перестал работать android studio emulator - “Устройство, подключенное к системе, не работает”

Я запустил его в какой-то момент, и он был очень очень медленным, однако после того, как я закрыл его и открыл снова, он перестал работать с этой...

139