Неделю назад, 25-26 октября 2019 года, в Санкт-Петербурге прошла Java-конференция Joker 2019. Что на ней происходило, какие доклады были, что показалось интересным — обо всём этом дальше.
Рубрика «spring» - 5
Joker 2019: триумф года
2019-11-03 в 14:25, admin, рубрики: java, jetbrains, jfrog, jpoint, jug.ru, oracle, spring, teavm, testcontainers, конференцииПодготовка к Spring Professional Certification. Spring Boot
2019-10-13 в 12:38, admin, рубрики: certification, java, spring, spring boot, вопросы, собеседованиеПриветствую всех. Эта статья раскроет основные вопросы по теме "Spring Boot". Она ориентирована на начинающих разработчиков, и может быть полезной при подготовке к собеседованию. Она получилась достаточно компактной, по сравнению с остальными статьями.
- Внедрение зависимостей, контейнер, IoC, бины
- AOP (аспектно-ориентированное программирование)
- JDBC, транзакции, JPA, Spring Data
- Spring Boot
- Spring MVC
- Spring Security
- REST
- Тестирование
Читать полностью »
Подготовка к Spring Professional Certification. Spring REST
2019-10-11 в 11:52, admin, рубрики: certification, java, rest, springСегодняшняя статья рассмотрит основные вопросы про REST в Spring. Она будет особенно полезна для начинающих программистов.
Официальный гид от Pivotal, в котором написано про темы для подготовки.
- Внедрение зависимостей, контейнер, IoC, бины
- AOP (аспектно-ориентированное программирование)
- JDBC, транзакции, JPA, Spring Data
- Spring Boot
- Spring MVC
- Spring Security
- REST
- Тестирование
Читать полностью »
Подготовка к Spring Professional Certification. Контейнер, IoC, бины
2019-10-06 в 12:10, admin, рубрики: dependency injection, ioc, java, pivotal, spring, spring framework, внедрение зависимостей, сертификацияДоброго времени суток.
Сегодня я решил представить вам перевод цикла статей для подготовки к Spring Professional Certification.
Это перевод только первой статьи, если он зайдет аудитории, я продолжу выпуск переводов.
- Часто в них информация не структурирована, не собрана, или не актуальна
- Молодые разработчики могут не знать английский. Этот цикл можно использовать не только для сертификации, но и для самообучения/повторения материалов.
- Этими материалами можно пользоваться при подготовке к собеседованию, т.к. они выстроены в виде вопросов и ответов.
- Важное, и самое главное преимущество — этот QA сделан из вопросов из официального Study Guide от Pivotal.
- Некоторые вопросы, которые казались мне лишними или которых не было в гиде я осознанно упустил.
- Внедрение зависимостей, контейнер, IoC, бины
- AOP (аспектно-ориентированное программирование)
- JDBC, транзакции, JPA, Spring Data
- Spring Boot
- Spring MVC
- Spring Security
- REST
- Тестирование
Эволюция создания веб-приложений на Java
2019-09-22 в 20:24, admin, рубрики: grails, GWT, j2ee, jakartaee, java, javascript, jee, jhipster, jsf, jsr, microprofile, play, spring, spring boot, spring webflux, struts, vaadinИстория развития построения веб-приложений на языке программирования Java с примерами их использования на временном промежутке от появления спецификации сервлетов до сегодняшнего дня.
Камбеки, топ-10 докладов JPoint 2019
2019-09-20 в 10:52, admin, рубрики: java, JDK, jpoint, jpoint2019, jug.ru, spring, конференции, ПрограммированиеВзгляды камрадов обращены в будущее. Новая, с пылу с жару версия джавы — Java/JDK 13, о которой недавно писал olegchir в хабрапосте, манит смотреть в завтрашний день. Коварно верну в прошлое — не такое далёкое, как хотелось бы, но достаточно ламповое, чтобы потратить десяток часов.
Дело в том, что коллеги сделали публичными видеозаписи докладов JPoint 2019. Под катом топ-10 докладов по версии участников конференции, а я честно расскажу: почему эти доклады стоит посмотреть в записи.
Веб-приложение на Kotlin + Spring Boot + Vue.js
2019-09-12 в 12:20, admin, рубрики: fullstack, fullstack development, kotlin, spring, spring boot, spring framework, vue, vue.js, vuejsДобрый день, дорогие обитатели !
Не так давно мне представилась возможность реализовать небольшой проект без особых требований по технической части. То есть, я был волен выбирать стек технологий на своё усмотрение. Потому не преминул возможностью как следует «пощупать» модные, молодёжные многообещающие, но малознакомые мне на практике Kotlin и Vue.js, добавив туда уже знакомый Spring Boot и примерив всё это на незамысловатое веб-приложение.
Читать полностью »
Тестирование аннотаций @NonNull-@Nullable
2019-08-25 в 14:40, admin, рубрики: annotations, bipredicate, cglib, dynamic proxy, framework, invoke, java, java 8, lambda, lombok, lookup, predicate, reflection, retention, spring, spring framework, Stream, testingВместо «Посвящается ...»
Описанная ниже задача не была новаторской или чертовски полезной, компания в которой я работаю не получит за нее прибыль, а я премию.
Но эта задача была, а значит ее пришлось решить.
Intro
В статье вы часто будете встречать слово Lombok, прошу хейтеров не торопиться с выводами.
Я не собираюсь «топить» за Lombok или его отсутствие, я как Геральт Сапковского, стараюсь хранить нейтралитет, и могу спокойно и без дрожи в веке читать код как с Lombok, так и без оного.
Но на текущем проекте упомянутая библиотека присутствует, и что-то подсказывает мне, что наш проект такой не единственный.
Так вот.
Читать полностью »
Автоматизация HTTP запросов в контексте Spring
2019-08-18 в 12:14, admin, рубрики: di, java, rest, springПредыстория
Несколько месяцев назад поступила задача по написанию HTTP API работы с продуктом компании, а именно обернуть все запросы с помощью RestTemplate и последующим перехватом информации от приложения и модификации ответа. Примерная реализация сервиса по работе с приложением была таковая:
if (headers == null) {
headers = new HttpHeaders();
}
if (headers.getFirst("Content-Type") == null) {
headers.add("Content-Type", MediaType.APPLICATION_JSON_VALUE);
}
HttpEntity<Object> entity;
if (body == null) {
entity = new HttpEntity<>(headers);
} else {
entity = new HttpEntity<>(body, headers);
}
final String uri = String.format("%s%s/%s", workingUrl, apiPath, request.info());
final Class<O> type = (Class<O>) request.type();
final O response = (O)restTemplate.exchange(uri, request.method(), entity, type);
… простенький метод, принимающий тип, тело и заголовки запроса. И все бы хорошо, но выглядело как костыль и не особо юзабельно в контексте Spring.
И пока товарищи джуны писали "костыли" в своих ветках, мне пришла в голову гениальнейшая идея — а почему бы не писать эти запросы "в одну строчку" (like Feign).
Идея
У нас в руках имеется мощный DI контейнер Spring, так почему бы не использовать его функционал в полной мере? В частности инициализации Data репозиториев на примере Jpa. Предо мной стояла задача инициализация класса типа интерфейс в контексте Spring и три варианта решения перехвата вызова метода, как типичной реализации — Aspect, PostProcess и BeanDefinitionRegistrar.
Кодовая база
Первым делом — аннотации, куда же без них, иначе как конфигурировать запросы.
1) Mapping — аннотация, идентифицирующая интерфейс как компонент HTTP вызовов.
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Mapping {
/**
* Registered service application name, need for config
*/
String alias();
}
В этом материале я хочу описать очень полезную, и часто используемую аннотацию Conditional и интерфейс Condition.
Контекст Spring — это огромный контейнер различных бинов, как самого спринга, так и пользовательских. Всегда хочется иметь гибкие инструменты управления этим зоопарком бинов. Аннотация @Conditional как раз и создана для этого.