Блог Java → Полезное по Java SE | OTUS
Асинхронный CompletableFuture. Часть 2

Java_Deep_22.06_3_Site.png

У CompletableFuture есть ещё интересные функции. Например, надо построить цепочку из асинхронных вызовов. Т.е. после завершения первой асинхронной функции запустить вторую, после второй третью и т.д. В JavaScript для этого применяются promise. В Java можно использовать CompletableFuture.

Асинхронный CompletableFuture. Часть 1

Java_Deep_22.06_2_Site.png

Время от времени появляется необходимость выполнить асинхронно (т.е. одновременно с основным действием программы выполняется другая задача) какой-нибудь код. Например, отправить письмо по e-mail или что-нибудь из базы данных прочитать. В Java для подобных операций можно создать поток и выполнить в нём нужное действие.

Chain Of Responsibility

Java_Deep_22.06_Site.png

Приходилось ли вам реализовывать поиск объекта в БД по условиям в виде: ищем объект по Условию А; если Объект не найден по Условию А, то ищем его по Условию Б; если и теперь не найден, то ищем по Условию В?

Комментарии в коде: почему, зачем и как?

JavaDeep_20_06_Site.png

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

Ошибка порядка наследования в Liskov Substitution

JavaDeep_19.06_Site.png

Согласно тесту Тьюринга, если что-то плавает как утка, крякает как утка и летает как утка, то это что-то — утка. Но что делать, если при этом она не работает без батареек?

Если в вашем приложении объект пришёл к вам по референсу на базовый класс, но ведёт себя не так, как вы ждёте от базового класса, то у вас в приложении нарушен один из принципов SOLID — Liskov Substitution. Ошибка частая и не сразу заметная.

Давно ли вы работали с числами?

JavaDeep18.05_Site.png

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

Аннотация @Autowired: что к чему?

Spring_Deep_13.06_Site_NEW.png

Решил рассказать немного про аннотацию @Autowired. Принцип её работы очень прост.

Допустим у нас есть bean-зависимости:

@Configuration
public class Config {
    // тип бина - ServiceDependency, имя - dependency
    public ServiceDependency dependency() {
        return new ServiceDependencyImpl()
    }
}

Spring Context

SpringDeep_10.06_Site.png

Под словом «Spring» обычно подразумевают просто IoC-контейнер, помогающий структурировать Java-приложения. В действительности под словом «Spring» скрывается целый мир.

IoC-контейнер, это замечательный способ собрать приложение «по кусочкам» из разных компонентов. Spring же предоставляет удобные способы как написания данных «кусочков», так и объединения их в единое приложение. Например, у нас есть два класса.

Theories в JUnit

JavaDeep_07.06_Site.png

Часто случается, что в unit-тестировании выполняется серия тестов, которые отличаются только входными значениями и ожидаемыми результатами. Обычный @Test метод позволяет проверить поведение в одном конкретном сценарии. Что делать, если хочется протестировать некоторую функциональность на некотором множестве входных данных?

Популярное
Сегодня тут пусто