Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Spring Boot. С чего начать?

2726  1 2 все
  beatus Teddybär07.03.19 20:23
beatus
07.03.19 20:23 
Последний раз изменено 07.03.19 20:31 (beatus)
Поступило выгодное предложение включиться в один проект на Sprint Boot'e на уровне миддла, но с хорошим окладом и прочими приятными бонусами. С чего посоветуете начать ознакомление? В годы студенчества изучал JavaSE и JSP/JSF2, несколько лет назад решил посмотреть, что нового в JavaEE (аннотации, JPA), Hibernate мне в теории также знаком. Чем отличается Spring Boot от Spring MVC? При первом приближении похоже на какой-то довесок к Spring MVC. Какую литературу посоветуете для начала?
#1 
Van Doren коренной житель08.03.19 03:33
Van Doren
NEW 08.03.19 03:33 
в ответ beatus 07.03.19 20:23

Как-то немного нагло идти в миддлы с нулевыми знаниями, не? Ладно, книги не нужны. Возьмите просто туториалы с оффсайта/примеры с гитхаба спринга и начирикайте что-то простое, например бложик. С логином и комментами. Заодно познакомитесь со Spring Security & Spring Data. Можно ещё логин с соцсетей запилить - познакомитесь со Spring Social (хотя когда я смотрел в последний раз эта функция в Spring 5 была изуродована, так что я всё ещё на 4-ке). Для начала этого хватит чтобы разобраться с основными моментами.


Чем отличается Spring Boot от Spring MVC?

Бут делает автоматическую конфигурацию всей этой хрени. Правда предупреждаю сразу, аутоконфиг Spring Security лучше сразу отключить. Я также отключаю кое-что другое, но это не для новичков. У меня это так выглядит:


@SpringBootApplication(exclude =
 {
    ErrorMvcAutoConfiguration.class,
    WebMvcAutoConfiguration.class,
    SecurityFilterAutoConfiguration.class,
    SecurityAutoConfiguration.class,
    SocialWebAutoConfiguration.class,
})
#2 
koder патриот08.03.19 08:05
koder
NEW 08.03.19 08:05 
в ответ beatus 07.03.19 20:23
Чем отличается Spring Boot от Spring MVC


Вы когда веб-эпп запускаете, вам нужен аппликацион-сервер. Томкет например. Так вот спрингбут позволяет создать каркас приложения, которое стартует без внешнего сервера. Достаточно создать jar и стартовать его.


На эту схему можно навесить что угодно. Например REST и ваше приложение будет отвечать на запросы. Или юзеринтерфэйс. Например jsp.

Так вот спринг предоставляет свой концепт юзеринтерфейса. Модель-вью-контроллер. Spring MVC. Этот концерт можно использовать без спрингбута, просто запустив под нормальным аппликауион-сервером.

#3 
koder патриот08.03.19 08:11
koder
NEW 08.03.19 08:11 
в ответ koder 08.03.19 08:05

В спринг- секьюрити не лезте. Это не ваш уровень, каркас приложения вам создавать не дадут. В учебных приложениях включена автоконфигурация и проблем для "посмотреть" нет.

https://start.spring.io


Здесь можно сгенерировать каркас приложения и посмотреть что это такое.

#4 
MrSanders старожил08.03.19 10:10
NEW 08.03.19 10:10 
в ответ beatus 07.03.19 20:23

Я тоже попробую...

Spring Boot makes it effortless to create Spring-powered, production-ready services without a lot of code!

Философия спринга "мы сами знаем, что ты хочешь, и незаметно это сделаем. Только не спрашивай как." применённая к микросервисам. 20 аннотаций, 40 строчек кода и у тебя уже что-то как-то работает, регистрируется в каталоге, читает и пишет в БД. Если вопрос "как" не сильно интересен - отличное средство. Обожает сканиовать classpath и угадывать что разработчику надо, так что аккуратнее с зависимостями.


Код отвечающий на get, который скомпилируется в запускаемый jar, в котором уже интегрирован томкет или джетти (в зависимости не от конфигурации, нет, от classpath), только запускай:

@SpringBootApplication
@RestController
public class RestDummy {

  @GetMapping("/")
  @ResponseBody
  public String version() {
    return "Hello World!";
  }

  public static void main(String[] args) {
    SpringApplication.run(RestDummy.class, args);
  }
}

Запускаем java -jar my-spring-boot.jar --server.port=12345 и вызываем http://localhost:12345/


Проблема как всегда в том, что даже туториалы не все работают так как описано. Разбираться в ошибках из-за конфигурации/аннотаций спринга, тяжело. Дебажить невозможно - слишком много генерируемого в рантайме кода. Хочешь чего-то нестандартного - страдай. Просто уменьшить время, после которого eureka выбросит неактивный сервис - танец с бубнами, и 15 рецептов, из которых половина работает с версией 1.5 другая с 2.0, а в текущей опять переименовали парочку пропертей, они же для внутреннего использования. В общем - спринг со всеми его преимуществами и недостатками.


Книги:
Spring Boot in Action
Spring Microservices in Action

Если надо лезть в облако или просто планируется запускать много микросервисов - Cloud Native Java

#5 
  beatus Teddybär09.03.19 10:47
beatus
NEW 09.03.19 10:47 
в ответ MrSanders 08.03.19 10:10
За ссылки спасибо. Обязательно посмотрю.
А пока скачал вот это: Michael Simons Spring Boot2
#6 
  beatus Teddybär09.03.19 10:56
beatus
NEW 09.03.19 10:56 
в ответ koder 08.03.19 08:05
каркас приложения, которое стартует без внешнего сервера
Не совсем понятно, согласно документации spring.io приложение поднимается на embedded Apache Tomcat 7 per default.
#7 
  beatus Teddybär09.03.19 11:00
beatus
NEW 09.03.19 11:00 
в ответ Van Doren 08.03.19 03:33, Последний раз изменено 09.03.19 11:02 (beatus)
Как-то немного нагло идти в миддлы с нулевыми знаниями
Неа. Проект стартует в июне, до тех пор у меня есть оплачиваемое фирмой время разобраться со Spring'oм.

НП: спасибо всем за ответы, приятно знать, что тут можно обратиться к знающим людям а не только наблюдать страдания Мурки.
#8 
Van Doren коренной житель09.03.19 23:47
Van Doren
NEW 09.03.19 23:47 
в ответ beatus 09.03.19 10:56
приложение поднимается на embedded Apache Tomcat 7 per default

Там автодетекция зависимостей. Что закинешь как зависимость - то и будет. У меня например Boot 1.5 & Tomcat 8.5. Но можно также закинуть Jetty или Undertow. А в реактивной версии вообще Netty. Актуально сейчас Jetty 9.14, Netty 4.1, Tomcat 9.0, Undertow 2.0. И да, всё embedded.

#9 
koder патриот10.03.19 06:59
koder
NEW 10.03.19 06:59 
в ответ beatus 09.03.19 10:56
Не совсем понятно, согласно документации spring.io приложение поднимается на embedded Apache Tomcat 7 per default.

Я имел в виду, что вам не нужно самому поднимать и настраивать сервер

#10 
koder патриот10.03.19 07:08
koder
NEW 10.03.19 07:08 
в ответ beatus 07.03.19 20:23

Немного ссылок. Спринг - это управление бинами. В видео немного о спринге и его кишках вообще.


Ну и еще по мелочи

http://spring-projects.ru/guides/tutorials-bookmarks/


Кстати спринг чудовищно быстро развивается. Аннотации и классы, которые еще полгода назад были актуальны, устаревают. Поэтому некоторые примеры из инета просто не работают с актуальными версиями спринга.

#11 
Бесконечный цикл прохожий17.03.19 10:27
NEW 17.03.19 10:27 
в ответ beatus 07.03.19 20:23
Поступило выгодное предложение включиться в один проект на Sprint Boot

"Выгодное" это сколько примерно? Ну хотя бы больше 60k€ или меньше?

#12 
  beatus Teddybär18.03.19 21:40
beatus
NEW 18.03.19 21:40 
в ответ Бесконечный цикл 17.03.19 10:27, Последний раз изменено 18.03.19 21:41 (beatus)
Наверное, больше. Но из-за Vermittler-провизиона мне будут платить 4,6 K в месяц брутто, что для меня тем не менее выгодно, т.к. после первого проекта можно будет уже уверенно поднимать планку, тем более если искать проекты самостоятельно.
#13 
  beatus Teddybär10.04.19 22:18
beatus
NEW 10.04.19 22:18 
в ответ beatus 07.03.19 20:23
Вопрос к понимающим: есть ли разница в использовании JPA 2+ и Hybernate4+ в плане удобства в Spring/ Spring Boot? Как по мне, так для JPA нужен всего 1 starter + 1 starter для JDBC и всё работает. Для Hybernate ещё Session Factory организовать нужно... или не нужно?
#14 
daduda знакомое лицо11.04.19 10:19
NEW 11.04.19 10:19 
в ответ beatus 07.03.19 20:23

а вам не кажется, что включать в проект Spring Boot зависимость только ради этого это как бэ оверхед ?

#15 
koder патриот11.04.19 13:57
koder
NEW 11.04.19 13:57 
в ответ beatus 10.04.19 22:18, Последний раз изменено 11.04.19 16:18 (koder)

Мы работаем с JPA и JpaRepository. Кроме подключения зависимостей вообще ничего делать не надо

для JPA нужен всего 1 starter + 1 starter для JDBC

А что такое starter?

#16 
koder патриот11.04.19 16:22
koder
NEW 11.04.19 16:22 
в ответ daduda 11.04.19 10:19
а вам не кажется, что включать в проект Spring Boot зависимость только ради этого это как бэ оверхед ?

Ради чего? Там по ссылке вроде тестовый рест-клиент... Или я не понял?

#17 
  beatus Teddybär11.04.19 19:43
beatus
NEW 11.04.19 19:43 
в ответ koder 11.04.19 13:57
Спсб., вроде разобрался. Hibernate в новой версии работает с JPA и предлагает дополнительные фичи, которые в общем-то необязательны.
А что такое starter?
Обычно это модули, которые подключаются в виде dependency в POM'e
#18 
Van Doren коренной житель12.04.19 13:19
Van Doren
NEW 12.04.19 13:19 
в ответ beatus 11.04.19 19:43

Hibernate в новой версии работает с JPA

Hibernate не работает с JPA, Hibernate имплементирует JPA!

#19 
koder патриот14.04.19 06:04
koder
NEW 14.04.19 06:04 
в ответ beatus 07.03.19 20:23
1 2 все