Spring Boot. С чего начать?
Как-то немного нагло идти в миддлы с нулевыми знаниями, не? Ладно, книги не нужны. Возьмите просто туториалы с оффсайта/примеры с гитхаба спринга и начирикайте что-то простое, например бложик. С логином и комментами. Заодно познакомитесь со 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, })
Чем отличается Spring Boot от Spring MVC
Вы когда веб-эпп запускаете, вам нужен аппликацион-сервер. Томкет например. Так вот спрингбут позволяет создать каркас приложения, которое стартует без внешнего сервера. Достаточно создать jar и стартовать его.
На эту схему можно навесить что угодно. Например REST и ваше приложение будет отвечать на запросы. Или юзеринтерфэйс. Например jsp.
Так вот спринг предоставляет свой концепт юзеринтерфейса. Модель-вью-контроллер. Spring MVC. Этот концерт можно использовать без спрингбута, просто запустив под нормальным аппликауион-сервером.
В спринг- секьюрити не лезте. Это не ваш уровень, каркас приложения вам создавать не дадут. В учебных приложениях включена автоконфигурация и проблем для "посмотреть" нет.
Здесь можно сгенерировать каркас приложения и посмотреть что это такое.
Я тоже попробую...
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
Неа. Проект стартует в июне, до тех пор у меня есть оплачиваемое фирмой время разобраться со Spring'oм.Как-то немного нагло идти в миддлы с нулевыми знаниями
НП: спасибо всем за ответы, приятно знать, что тут можно обратиться к знающим людям
приложение поднимается на 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.
Немного ссылок. Спринг - это управление бинами. В видео немного о спринге и его кишках вообще.
http://spring-projects.ru/guides/tutorials-bookmarks/
Кстати спринг чудовищно быстро развивается. Аннотации и классы, которые еще полгода назад были актуальны, устаревают. Поэтому некоторые примеры из инета просто не работают с актуальными версиями спринга.
Hibernate в новой версии работает с JPA
Hibernate не работает с JPA, Hibernate имплементирует JPA!