Блог

Web server java spring

Annotated Controllers ". Лента постов Все группы. Пост из группы Random. Комментарии 8. Для того, чтобы оставить комментарий вы должны авторизоваться. Taras Kutselya 24 уровень.

Spring. Переходим на Web

Понял что ни черта не понял Стас Пасинков 26 уровень, Киев. Viacheslav 3 уровень, Санкт-Петербург. Понятно, что в "модном современном" мире нет их, но Лучше понять на XML и отказаться, чем сразу воткнуть Spring Boot и считать всё происходящее магией Возможно, я не прав.

бесплатные хостинги для сервера minecraft

Но мне кажется так нагляднее Рад буду услышать и другие мнения, спасибо. Попробую про XML сделать менее пугающим, спасибо. Aleksandr 35 уровень. Для меня там тоже куча строчек не понятно для чего и откуда взявшиеся. Мне нужно написать тест? Никаких лишних телодвижений, меньше кода и усилий.

Не понимаю, почему кто-то считает Autowired над полем плохим тоном, я за несколько лет работы со спрингом так и не нашел объяснения для себя почему так делать плохо, а вот через конструктор — хорошо.

AndreyRubankov 21 июля в Инжект в приватное поле требует поставить field. Начиная с Java 9 field. Начиная с Java 10 — его собирались выключить полностью или еще больше ограничить.

Инжект в поле класса — это прямой путь в ад в мир, где ты не можешь работать с объектом без рефлексии и без контейнеров. Чтобы выполнить трифиальный тест — нужно подымать контейнер для того, чтобы заинжектить поле!!! Инжект в поле класса не дает возможности сделать оптимизацию по кешированию конструкторов см. Спасибо за ответ, но я все равно не вижу преимуществ DI через конструктор вместо инджекта в поле.

Не всегда — это когда? Я таких случаев не знаю. И я почти уверен, что до релиза там будет все как было, так как они поломают кучу библиотек, а backward-compatibility это главная фишка Java.

Это все-таки не Unsafe, на backward-compatibility которого можно наплевать, так как он формально не часть спецификации. Не нужно, гуглить в сторону InjectMocks и MockitoAnnotations. И чем же это плохо? При setAccessible true у вас перформенс будет почти тот же, что и при сеттере. Кеш конструктора сделает оптимизацию вам в лучшем случае на несколько миллисекунд.

Лучше инжекшна через конструктор только вообще без инжекшена. Мой любимый подход — это когда бины полностью отвязаны от контейнера и полностью самодостаточны. Вся контейнерная логика находится в java-конфигурации, которая инстанцирует бины явно с нужными параметрами конструктора, вызовами нужных сеттеров, при помощи билдеров или фабрик, не важно как по большому счету. Все инжекшены на уровне конфигурации. Тем самым мы выносим логику инициализации контекста выполнения и создаем косвенность на уровне конфигурации.

Зато нам не важно какие объекты у нас выступают в роли бинов. Как заанотированы их поля или конструкторы. Мы можем тестировать этот бин без какой-либо привязке к инжекшенам вообще и делать бины более нативными для языка. Лично для меня это намного более чисто, гибко и представляется как конструктор, где бины это просто классы, которые мы собираем при помощи конфигурации и можем при желании сделать конфигурации разными, гибкими и настраиваемыми.

Хотя сам сервер если разобраться ничего не знает о контейнерах. То же и с другими компонентами — хорошо, если они никак не завязаны на инжекшн и могут работать независимо — в этом смысле правильное поведение бина, если он всё зависимости принимает в конструктор и просто не создается без.

Мы так проектируем обычные классы, почему те, что мы используем в контейнере должны чем-то отличаться? К слову в самом спринге всё примерно так и сделано бут вообще весь состоит из таких конфигураций.

Нигде вы не увидите аннотаций Service или Injectпотому, что всё драйвится внешними конфигами, в свою очередь потому, что это дает возможность гибкости и настриваемости.

Не вижу причин, почему мой код не может быть. AndreyRubankov 22 июля в Например Java Security Policy позволяет запретить рефлексию но в этом случае, думаю, весь Spring не будет работать если погуглить немного: Но если запускать приложения как Модульные — то это уже будет новый функционал и тут уже можно внедрить новые правила, что успешно и сделали.

Именно Mockito и выступает в роли IoC контейнера в тестах. Проблемы тестирования через Mockito достойны целой статьи. Это замечательный вопрос! Во-первых, в этом случае приватное поле становится публичным, а это уже минус для оптимизации. Во-вторых, final поле прекращает быть final, а это в свою очередь значит, что оптимизации, которые связаны с final полями уже не будут работать, а так же, что объект не может быть по-нормальному расшарен между потоками и нужно делать синхронизации.

В-третьих, это нарушение целостности и безопасности, когда приватное поле, вдруг становится публичным в рантайме и используется не через публичный API класса. К слову, добавлю еще один пункт: Классы, которые используют инъекцию зависимостей в поля Inject, Autowired, Resource etc.

Это не самая большая проблема, но она тоже существует. Я всетаки считаю что прописать стоит ИМХО. Одно слово, зато все понятно что откуда и. Хотя я также в гетерах и сетарах все через this пишу. Можно, но необязательно. В повых версиях спринг сам разберется. А вообще рекомендуют по возможности Autowire на конструктор. Так меньше шансов что останется не инициализированными. Но в случае циклических зависимостей не прокатит.

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

Обычно люди не очень хорошо понимают как там всё устроено. К слову, спринг это умеет, если например сделать один из бинов лейзи. StanislavL 21 июля в Я обычно спрашиваю, что будет если в singleton scope bean завайрить session scope bean. И копать глубже как эта магия устроена.

А вот раз уж вы подняли такую тему — а зачем? Я уже давно работаю со Спрингом, но как циклическую зависимость сделать — не знаю. Более того, никогда не делал — и считаю наличие циклической зависимости проблемой дизайна.

В реальности обычно этого никто не знает, потому что, во-первых, плохой тон, во-вторых, нужно очень редко. Поэтому когда человек, говорит, что не знает, тогда я спрашиваю: А если бы вы сами это собирались реализовать? А некоторые сами пытаются предположить как оно там или предполагают как это можно было бы реализовать. Кто-то говорит, что это бедпрактис.

регистрации бесплатного домена 3 уровня

Что бы человек ни сказал, всё дает представление о. А ответ: Дайте угадаю: А все-таки: Вопрос не праздный. Собеседование длится всего-то час или около. Вам больше время некуда потратить?

Создание RESTful Web-сервиса

Если разработчик ответил правильно — как этот ответ характеризует его как специалиста и профессионала? Или умеют, но не хотят — потому что нормальный специалист их технологический стек на тряпки раздерёт вместе с архитектором и тим-лидом, а job security — это страшная сила: Выше писал о том, что правильный ответ здесь не важен, к тому же его обычно никто не знает.

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

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

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

Всё это можно выяснить начиная с этого вопроса. Вопрос этот очень богат коннотациями, например, он позволяет посмотреть насколько человек представляет как работает язык: Показывает насколько человек глубоко знает спринг, потому что совершенно не обязательно знать правильный ответ на этот вопрос, чтобы предположить как спринг себя поведет в той или иной ситуации. Если же человек сразу отвечает, то скорее всего он человек прошаренный и можно много времени сэкономить.

Опять же, я не требую правильного ответа на этот вопрос, а лишь считаю его хорошим стартом, который всегда дает базу для большинства вопросов, которые я бы хотел задать, особенно если мне нужно очень быстро составить представление о человеке.

Знает ли он о том, что спринг умеет проксировать бины? Предложит ли он использовать прокси для решения такой задачи? Может быть какая-то смешная третья опция… для собеседования всё хорошо.

Да, опция достаточно смешная. На столько, что на моей памяти никто её не предложил. Обычно люди всё же пытаются решать ту задачу, которую им предложили решить, что часто бывает не менее полезно, чем инициативность. AFH 20 июля в Как писать на Spring в А не пора уже про webflux писать? Пробовали уже использовать? Не хотите про это дело написать? Пора, пробовал, написал: AFH 21 июля в Очень приятно, что моя статья вдохновила Вас на написание этой полезной статьи о Spring.

Надеюсь, Ваша статья поможет мне вникнуть в Spring пока с этим туго. Полезно даже если ничего не понятно, просто потому что все с живыми примерами. Правда, видео идет два с половиной часа на английском, но зато там как раз про внутренности Spring Boot, как и что он конфигурит, какие у него могут быть критерии и. Crandel 21 июля в По этой теме есть отличное видео с Joker Fen1kz 20 июля в Дело в том, что я не верю туториалам вида: GerrAlt 20 июля в Вообще это хорошая мысль, может я соберусь продолжить эту статью второй, и пусть на базовом уровне, но объяснить внутренности приложения — типа бинов, конфигурации, автоконфигурации, что делает Boot.

Думаю, будет очень полезно. Может даже на этом же приложении рассмотреть, развеять магию и сорвать покровы! Чтобы развеять магию и сорвать покровы необходимо много и упорно читать исходный код тех фреймворков, которые вы используете. Спасибо автору, статья полезная, особенно в плане получения общего представления как, что и. Для старта самое то, чтобы не испугаться раньше времени По себе заметил интересную особенность: Размер JAR с включенным сервером!

Причем как я уже говорил, кроме этого файла на сервере не нужно ничего кроме JRE. Так что сарказм, скорее, себя не оправдал: Сразу отвечу про использование памяти — сам фреймворк съедает примерно 32 Мб памяти.

У Дейва Сайера, одного из участников команды Spring Boot есть исследование про потребление памяти Спрингом. SlavikF 21 июля в Я вот, PHP-ник, посматриваю в сторону Java. Появилась нужда использовать некоторые библиотеки, а они нормально написаны под Java, а под PHP — так себе… Очень интересно было прочитать эту статью, тем более, что пару месяцев назад я уже экспериментировал с.

Вот какие у меня остались вопросы после экспериментов и прочтении статьи. Может это и не совсем вопросы, которые должен задавать новичок, но: Он обычно стоит за Апачем, или за Nginx. А вот Spring работает сам по себе хотя его конечно тоже можно запроксировать.

как установить плагин на хостинг серверов

Ну вот захотелось мне, чтобы сервер слушал на порту И внезапно выяснилось, что для этого надо запускаться по рутом, а это нехорошо. Я погуглил, советов много, но как-то всё не. Ну и кроме порта есть и другие настройки. В общем и целом, если хочется что-то подтюнить — то у PHP есть для этого два места: Там и настройки памяти, и настройки потоков, параллельности и. Я уверен, что всё это можно настраивать и в Spring, но как-то тяжелей тут всё это осмыслить.

Конечно, с этим можно разобраться. Вопросы очень хорошие. Мы не работает с базой данных напрямую, работаем с абстракцией — база это теоретически заменяемая реализация. То же самое и с сервером — мы не настраиваем сервер напрямую, мы используем конфиг файл, по которому потом Spring Boot настроит сервер. Это делается в файле application.

Web Server VS Web Container vs Application Server

И теперь если мы заменим Tomcat на Jetty а это тривиальное изменение в pom. Настроить именно embedded Tomcat через его конфиг файлы, наверное, тоже можно — но это пример того, как мы будем пытаться заставить Spring делать то, что он не хочет — и вряд ли получится легко и хорошо.

Про root думаю актуально и для Апача, просто он скорее всего уже был установлен под рутом и работает как демон — поэтому занимает порт При подключении к реальной базе — Spring точнее, Spring Data, а еще точнее конкретная ORM — Hibernate может либо создать схему автоматически, либо проверить, что модель энтитей соответствует структуре таблиц.

Первый вариант в продакешене, разумеется, никто не использует — все работают с миграциями БД flyway или liquibase. Второй вполне работает для прототипов или интеграционных тестов. Это не спринг виноват. SlavikF 23 июля в Не совсем так… Да, Апач старует, как рут, но запросы обрабатываются в контексте пользователя.

Обычно www-data. Для этого у Апача есть какой-то свой механизм it uses setuid to switch to user context of specified user in httpd.

Конечно, можно и в Spring написать подобный механизм, но его нужно писать, а там уже. Gravit 21 июля в Как раз недавно пытался разобраться с Java Web и Spring в частности. Одна запись в xml не туда — приложение не деплоится, странные исключения в логах, которые в гугле не ищутся, ошибка в любой непонятной ситуации.

Туториалы только по одной IDE — Esclipe, ручное создание xml файлов, ручное прописывание каждого контроллера. О Spring Boot слышу впервые из этой статьи, и это то, что мне. Спасибо автору за такую статью! Жду продолжения. Вы, похоже, смотрели какие-то древние туториалы.

А от привязки к конкретной среде вообще нужно абстрагироваться. Подписываюсь под каждым предложением, имел аналогичный опыт и возникшие проблемы. А как написанное приложение задеплоить в Tomcat? Поменял в pom. С Java Web и Spring никогда не работал. Чтобы пути строились от корня, нужно назвать файл root. В документации есть отдельная секция. Я обновил код и добавил бранч для деплоймента в Tomcat.

Небольшая анимация работоспособности приложения:. Осталось добавить кнопку удаления записи. Для этого в свободную ячейку таблицы нужно добавить гиперссылку с указанием на удаление и id записи, которую хотим удалить:. На этом пока. Естественно, можно дальше усложнять приложение: Весь код приложения можно найти по ссылке.

Спасибо, работает на localhost! Это не работает: Контекст приложения не влияет на пути Controller. Для него это как часть доменного пути. Ваш e-mail не будет опубликован. Сохранить моё имя, email и адрес сайта в этом браузере для последующих моих комментариев. Уведомить меня о новых комментариях по email. Уведомлять меня о новых записях почтой.

Skip to content. List. Order.

Spring MVC первое веб приложение — Java master

Order getById Integer id. ArrayList. OrderRepository. OrderRepositoryImpl. Controller. Model. RequestMapping. RequestMethod. OrderService. OrderServiceImpl. Понравилась статья? Поделиться ссылкой: Facebook LinkedIn Twitter. Java приложение на бесплатный хостинг. Spring dependency injection — внедрение зависимостей в Spring.