0 / 0 / 0
Регистрация: 10.10.2023
Сообщений: 22

Spring Boot или Spring MVC?

10.02.2024, 12:42. Показов 1702. Ответов 12

Author24 — интернет-сервис помощи студентам
Добрый день форумчане. Прошу совета у опытных коллег знающих и работающих с фреймворком Spring.
Недавно решил сделать проект для портфолио: типовое CRUD-приложение, по учёту продуктов и магазинов, в которых они продаются.
Я недолго изучаю Spring, и разумеется, столкнулся с тем, что не знаю по какой конфигурации делать приложение: Spring MVC или Spring Boot.
Я уже делал рабочее приложение с использованием Spring MVC, по туториалу. Так же я делал приложение Spring Boot, тоже по туториалу, но оно не работало по нормальному, да и сам туториал был не особо информативен.
Прошерстив кое-какие гайды, мне показалось, что Boot более предпочтительная, так как с нею работают и Hybernate и Spring Data и Spring Security, чего не скажешь про MVC.
В любом случае, я только начал делать проект, и указал в нём следующие зависимости:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
 
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
    </dependency>
 
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>
 
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>
 
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>
 
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${spring.version}</version>
    </dependency>
 
    <dependency>
      <groupId>org.thymeleaf</groupId>
      <artifactId>thymeleaf</artifactId>
      <version>3.1.2.RELEASE</version>
    </dependency>
 
    <dependency>
      <groupId>jakarta.servlet</groupId>
      <artifactId>jakarta.servlet-api</artifactId>
      <version>6.0.0</version>
      <scope>provided</scope>
    </dependency>
 
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-validation</artifactId>
      <version>3.2.2</version>
    </dependency>
 
    <dependency>
      <groupId>org.postgresql</groupId>
      <artifactId>postgresql</artifactId>
      <version>42.7.1</version>
    </dependency>
 
 
    <dependency>
      <groupId>org.hibernate.validator</groupId>
      <artifactId>hibernate-validator</artifactId>
      <version>8.0.1.Final</version>
    </dependency>
 
    <dependency>
      <groupId>org.springframework.data</groupId>
      <artifactId>spring-data-commons</artifactId>
      <version>3.2.2</version>
    </dependency>
 
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.30</version>
      <scope>provided</scope>
    </dependency>
 
 
  </dependencies>
Прошу подсказки в этом вопросе, какую конфигурацию выбрать, и по возможности, какие зависимости к ним подключить.
Заранее благодарю
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.02.2024, 12:42
Ответы с готовыми решениями:

Spring или EE
Всем привет, возник вопрос. Следует ли учить Java EE если хочу учить Spring или можно сразу приступать ? Знаю SE, UI (Swing, FX).

Актуален ли Spring 3 ?
Добрый день! Прошу совета: какова актуальность Spring 3, стоит ли его изучать или сразу начать с 5? Просто есть на руках вроде как неплохая...

Наладка Spring
Здравствуйте, не подскажите, почему у человека по урокам которого я учусь такая иерархия папок(1 скрин), а у меня через время становится...

12
156 / 62 / 16
Регистрация: 12.12.2023
Сообщений: 389
10.02.2024, 17:22
Что то тут много от спринга полного, теряется смысл спригбута как именно упрощенного набора. Там минимальный набор собственно
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
ну и для тестов
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
1
0 / 0 / 0
Регистрация: 10.10.2023
Сообщений: 22
10.02.2024, 19:47  [ТС]
Цитата Сообщение от Ewlampiy Посмотреть сообщение
Что то тут много от спринга полного, теряется смысл спригбута как именно упрощенного набора. Там минимальный набор собственно
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
ну и для тестов
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
Хотите сказать, что при подключении этой зависимости автоматически загрузятся и остальные фреймворки?
0
156 / 62 / 16
Регистрация: 12.12.2023
Сообщений: 389
11.02.2024, 05:37
Ну когда-нибудь вы может и весь функционал спринга постепенно подтянете, но для старта вам нужен единственный артифакт spring-boot-starter-web и вы уже получаете готовое работающее приложение, никаких даже xml с конфигом не надо, аннотаций достаточно, очень низкий порог вхождения

Java
1
2
3
4
5
6
7
8
9
10
11
12
@SpringBootApplication
@RestController
public class Main {
    public static void main(final String[] args) {
        SpringApplication.run(Main.class, args);
    }
 
    @GetMapping("/hello")
    public String hello() {
        return "test";
    }
}
Вот это уже откликается на localhost:8080/hello. А статические файлы можно положить в resources/static
0
0 / 0 / 0
Регистрация: 10.10.2023
Сообщений: 22
11.02.2024, 09:23  [ТС]
Просто запустить? И всё? А для запуска разве не потребуется Tomcat?
0
156 / 62 / 16
Регистрация: 12.12.2023
Сообщений: 389
11.02.2024, 10:11
Лучший ответ Сообщение было отмечено MrEntropy как решение

Решение

Так boot для того и нужен чтобы со всем этим не париться, все готово из коробки, томкат тоже встроен. И бины где то в отдельном конфиге не нужно перечислять, он их сам по всем классам во всех подкаталогах ищет.

Когда с ним уже после спринга знакомишься - впечатляет. Очень много сахара.

Добавлено через 14 минут
ps. Все-таки как я сваливать в один файл и старт и конфиг и рест конечно не дело, это просто для краткости цитирования
1
0 / 0 / 0
Регистрация: 10.10.2023
Сообщений: 22
12.02.2024, 13:57  [ТС]
Нет, Spring Boot - хрень, когда дело доходит до БД. Сейчас сел на нём телеграмбот писать, всё шло хорошо. Начал связывать с PostgreSQL, опять какая-то хрень начинается(((((((
0
156 / 62 / 16
Регистрация: 12.12.2023
Сообщений: 389
12.02.2024, 14:49
А тут то с чем загвоздка? Добавляете в депенденси spring-boot-starter-data-jpa ну и сам postgresql и дальше можно даже написать простенький crud даже без единого sql запроса
0
0 / 0 / 0
Регистрация: 10.10.2023
Сообщений: 22
12.02.2024, 16:16  [ТС]
Добавил. И spring-boot-starter-data-jpa и postgresql. В консоли вылезает вот это:

Кликните здесь для просмотра всего текста

Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2024-02-12T18:14:43.298+03:00 ERROR 49444 --- [ main] o.s.b.d.LoggingFailureAnalysisReporter :

***************************
APPLICATION FAILED TO START
***************************

Description:

Field userRepository in ru.MrEnthropy.GorodaBotDemo.service.Tele gramBot required a bean of type 'ru.MrEnthropy.GorodaBotDemo.model.UserR epository' that could not be found.

The injection point has the following annotations:- @org.springframework.beans.factory.annot ation.Autowired(required=true)


Action:

Consider defining a bean of type 'ru.MrEnthropy.GorodaBotDemo.model.UserR epository' in your configuration.


Бот не запускается. У многих такое, но как это решить ума не приложу теперь
0
156 / 62 / 16
Регистрация: 12.12.2023
Сообщений: 389
12.02.2024, 16:24
Не могу догадаться что именно вы пытаетесь сделать, но вот в таком минималистичном варианте уже работает

Java
1
2
3
4
5
6
7
8
9
public interface Articles extends JpaRepository<Article, Long> {}
...
@Entity
public class Article extends AbstractPersistable<Long> {public String name, content;}
...
@Autowired
private Articles articles;
...
return articles.findAll();
0
0 / 0 / 0
Регистрация: 10.10.2023
Сообщений: 22
12.02.2024, 16:59  [ТС]
У меня почти так же, и всё равно не работает.
Для наглядности, я прикреплю ссылку с примером, по которому я учусь: https://www.youtube.com/redire... Asq3rB4zZw
Там у меня почти идентично, только я использую PostgreSQL вместо MySQL
0
156 / 62 / 16
Регистрация: 12.12.2023
Сообщений: 389
12.02.2024, 17:24
Ну могу только предположить что вы там перемещали файлы местами и/или переименовывали пакаджи

Если у вас в итоге UserRepository находится не в том же пакадже что файл с аннотацией @SpringBootApplication или в его подпакадже то тогда нужно либо вернуть иерархию в правильный вид либо в явном виде указать список пакаджей которые следует сканировать @SpringBootApplication(scanBasePackages= {"a.b.c", "d.e.f"})

Смысл в том что если файл с аннотацией @SpringBootApplication (это не обязательно тот же в котором main(), вы можете их разделить) лежит в пакадже "org.example" то все что лежит в "org.example" и в "org.example.x" просканится, а вот "org.secondmodule.*" проигнорится

Поэтому если вы скажем переместили SpringDemoBotApplication или его аналог из корня "для порядка" куда-нибудь в подкаталог то верните его обратно
0
0 / 0 / 0
Регистрация: 10.10.2023
Сообщений: 22
14.02.2024, 08:46  [ТС]
Всё. Решил. Видимо какой-то неочевидный сбой в иерархии пакетов. Начал проект заново, всё пошло как надо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.02.2024, 08:46
Помогаю со студенческими работами здесь

Оптимизация кода Spring
Java 8 . Spring есть класс специально для констант обозначен как @Component в нем список констант которые используются всем...

Веб-магазин (Spring)
Форумчане, нужна ваша помощь в написании приложения веб-магазина, есть такое задание: Веб-магазин,...

Каркас Spring boot или mvc + security + работа с бд
Нужно web приложение с авторизацией(пытался прикрутить spring security), в которой пользователи создают тикеты(вопросы), а эксперты на них...

Spring Boot mvc
Нужно создать веб страницу с полем для ввода сообщений и кнопкой отправки, эти сообщения должны сохраняться в ArrayList, затем выводить на...

Spring MVC. 404 ошибка при включении Spring Data JPA в проект
Добрый день. Есть простой шаблонный проект с использованием Spring MVC и Maven. С зависимостями Spring MVC проект собирается нормально и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

Новые блоги и статьи
Реализация многопоточных сетевых серверов на Python
py-thonny 16.05.2025
Когда сталкиваешься с необходимостью писать высоконагруженные сетевые сервисы, выбор технологии имеет критическое значение. Python, со своей элегантностью и высоким уровнем абстракции, может. . .
C# и IoT: разработка Edge приложений с .NET и Azure IoT
UnmanagedCoder 16.05.2025
Мир меняется прямо на наших глазах, и интернет вещей (IoT) — один из главных катализаторов этих перемен. Если всего десять лет назад концепция "умных" устройств вызывала скептические улыбки, то. . .
Гибридные квантово-классические вычисления: Примеры оптимизации
EggHead 16.05.2025
Гибридные квантово-классические вычисления — это настоящий прорыв в подходах к решению сложнейших вычислительных задач. Представьте себе союз двух разных миров: классические компьютеры, с их. . .
Использование вебсокетов в приложениях Java с Netty
Javaican 16.05.2025
HTTP, краеугольный камень интернета, изначально был спроектирован для передачи гипертекста с минимальной интерактивностью. Его главный недостаток в контексте современных приложений — это. . .
Реализация операторов Kubernetes
Mr. Docker 16.05.2025
Концепция операторов Kubernetes зародилась в недрах компании CoreOS (позже купленной Red Hat), когда команда инженеров искала способ автоматизировать управление распределёнными базами данных в. . .
Отражение в C# и динамическое управление типами
stackOverflow 16.05.2025
Reflection API в . NET — это набор классов и интерфейсов в пространстве имён System. Reflection, который позволяет исследовать и манипулировать типами, методами, свойствами и другими элементами. . .
Настройка гиперпараметров с помощью Grid Search и Random Search в Python
AI_Generated 15.05.2025
В машинном обучении существует фундаментальное разделение между параметрами и гиперпараметрами моделей. Если параметры – это те величины, которые алгоритм "изучает" непосредственно из данных (веса. . .
Сериализация и десериализация данных на Python
py-thonny 15.05.2025
Сериализация — это своего рода "замораживание" объектов. Вы берёте живой, динамический объект из памяти и превращаете его в статичную строку или поток байтов. А десериализация выполняет обратный. . .
Чем асинхронная логика (схемотехника) лучше тактируемой, как я думаю, что помимо энергоэффективности - ещё и безопасность.
Hrethgir 14.05.2025
Помимо огромного плюса в энергоэффективности, асинхронная логика - тотальный контроль над каждым совершённым тактом, а значит - безусловная безопасность, где безконтрольно не совершится ни одного. . .
Многопоточные приложения на C++
bytestream 14.05.2025
C++ всегда был языком, тесно работающим с железом, и потому особеннно эффективным для многопоточного программирования. Стандарт C++11 произвёл революцию, добавив в язык нативную поддержку потоков,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru