Какой результат выведет следующая программа?
Anonymous Quiz
30%
Equal
34%
Not equal
20%
Ошибку при выполнении
15%
Ошибку компиляции
👍14
Что такое IoC? Как это используется в Spring?
IoC - один из принципов ООП. Расшифровывается как Inversion of Control и дает нам возможность просто описать класс, не заботясь о его инициализации. Иными словами - мы создаем классы, отдаем эти класс под управление системой, а система уже сама создает экземпляры этого класса и сама решает какой экземпляр и где его использовать.
Например, мы описываем класс, помечаем его аннотацией и далее уже можем его использовать в том или ином контексте, не озадачиваясь тем что нам еще необходимо его правильно проинициализировать, либо этот класс должен быть singlton, либо еще чем то. Мы просто его используем. И все.
Spring использует IoC-контейнер для инициализации классов, контроля за их использованием. Когда мы помечаем один из классов как @Service мы "отдаем" этот самый класс под власть Spring и дальше сам Spring будет отвечать за создание экземпляра этого класса и внедрение этого самого экземпляра в нужном месте.
IoC - один из принципов ООП. Расшифровывается как Inversion of Control и дает нам возможность просто описать класс, не заботясь о его инициализации. Иными словами - мы создаем классы, отдаем эти класс под управление системой, а система уже сама создает экземпляры этого класса и сама решает какой экземпляр и где его использовать.
Например, мы описываем класс, помечаем его аннотацией и далее уже можем его использовать в том или ином контексте, не озадачиваясь тем что нам еще необходимо его правильно проинициализировать, либо этот класс должен быть singlton, либо еще чем то. Мы просто его используем. И все.
Spring использует IoC-контейнер для инициализации классов, контроля за их использованием. Когда мы помечаем один из классов как @Service мы "отдаем" этот самый класс под власть Spring и дальше сам Spring будет отвечать за создание экземпляра этого класса и внедрение этого самого экземпляра в нужном месте.
👍17🔥1
Какой результат выведет следующая программа?
Anonymous Quiz
4%
10
29%
15
6%
20
62%
Ошибку компиляции
👍22😐15😢2🎉1
Что такое AOP? Как это используется в Spring?
АОР - аспектно-ориентированное программирование, парадигма программирования, призванное решить те задачи для которого ООП кажется избыточным. В основе идеи лежит выделение сквозной функциональности. Грубо говоря - мы выносим наш функционал, не относящийся к бизнес логике в отдельное место и даем ему набор правил когда и с кем работать. Сумбурно? Пример: мы не можем писать код без логов. Но логи - это не часть бизнес логики, это вспомогательный функционал. Мы можем описать всю логику логов в отдельном классе и затем каждый раз инициализировать этот класс для выведения лога или же мы можем создать отдельный класс(аспект) и навесить набор правил когда и где использовать этот код. Имеем класс Service, метод method() внутри и аспект LogAspect. Используя аннотации мы можем указать методам внутри LogAspect что они должны быть вызваны перед, либо после вызова Service.method(). Так же мы можем указать выполнение после возврата результата либо после ошибки.
Spring использует АОР, например, при проверке security при доступе на тот или иной эндпоинт.
АОР - аспектно-ориентированное программирование, парадигма программирования, призванное решить те задачи для которого ООП кажется избыточным. В основе идеи лежит выделение сквозной функциональности. Грубо говоря - мы выносим наш функционал, не относящийся к бизнес логике в отдельное место и даем ему набор правил когда и с кем работать. Сумбурно? Пример: мы не можем писать код без логов. Но логи - это не часть бизнес логики, это вспомогательный функционал. Мы можем описать всю логику логов в отдельном классе и затем каждый раз инициализировать этот класс для выведения лога или же мы можем создать отдельный класс(аспект) и навесить набор правил когда и где использовать этот код. Имеем класс Service, метод method() внутри и аспект LogAspect. Используя аннотации мы можем указать методам внутри LogAspect что они должны быть вызваны перед, либо после вызова Service.method(). Так же мы можем указать выполнение после возврата результата либо после ошибки.
Spring использует АОР, например, при проверке security при доступе на тот или иной эндпоинт.
👍22
Какой результат выведет следующая программа?
Anonymous Quiz
14%
0
18%
128
53%
-128
15%
Ошибку компиляции
👍26
Жизненный цикл Spring Beans?
Жизненным циклом бина в Spring управляет контейнер Spring. После запуска контейнера он начинает создавать необходимые бины(компоненты) и внедрять зависимости. Когда контейнер завершает свою работу уничтожаются и бины связанные с ним. Весь цикл жизни бина можно разделить на 6 этапов:
1. Инстанцирование объекта - технический старт жизни любого объекта, работа конструктора.
2. Установка свойств и внедрение зависимостей - выполнение конфигурационных свойств бина и внедрение необходимых ему зависимостей.
3. Уведомление aware-интерфейсов - если бин реализует Aware интерфейс, он будет вызываться путем передачи имени бина set*() метод.
4. Пре-инициализация - метод postProcessBeforeInitialization() интерфейса BeanPostProcessor.
5. Инициализация - сначала выполняется метод бина с аннотацией PostConstruct, затем метод afterPropertiesSet() в случае если бин реализует InitializingBean, метод init().
6. Пост-инициализация - метод postProcessAfterInitialization() интерфейса BeanPostProcessor.
Жизненным циклом бина в Spring управляет контейнер Spring. После запуска контейнера он начинает создавать необходимые бины(компоненты) и внедрять зависимости. Когда контейнер завершает свою работу уничтожаются и бины связанные с ним. Весь цикл жизни бина можно разделить на 6 этапов:
1. Инстанцирование объекта - технический старт жизни любого объекта, работа конструктора.
2. Установка свойств и внедрение зависимостей - выполнение конфигурационных свойств бина и внедрение необходимых ему зависимостей.
3. Уведомление aware-интерфейсов - если бин реализует Aware интерфейс, он будет вызываться путем передачи имени бина set*() метод.
4. Пре-инициализация - метод postProcessBeforeInitialization() интерфейса BeanPostProcessor.
5. Инициализация - сначала выполняется метод бина с аннотацией PostConstruct, затем метод afterPropertiesSet() в случае если бин реализует InitializingBean, метод init().
6. Пост-инициализация - метод postProcessAfterInitialization() интерфейса BeanPostProcessor.
👍19
Какой результат выведет следующая программа?
Anonymous Quiz
34%
Hello world!
36%
Ошибку при выполнении
29%
Ошибку компиляции
👍18🤔4😢2
Какие есть scope Spring Beans?
Scope бинов - области видимости бинов. Spring включает в себя шесть областей видимости:
Singleton - область видимости установленная по умолчанию, в случае если не установлен никакая другая видимость. Работает как любой паттерн проектирования Singleton.
Prototype - означает что каждый раз при обращении к контейнеру будет возвращен разные объекты.
Request - создает бин для одного HTTP запроса.
Session - аналогичен Request, но работает на уровне сессии.
Application - жизненный цикл ServletContext.
Websocket - создает бин для сессии веб-сокета
Scope бинов - области видимости бинов. Spring включает в себя шесть областей видимости:
Singleton - область видимости установленная по умолчанию, в случае если не установлен никакая другая видимость. Работает как любой паттерн проектирования Singleton.
Prototype - означает что каждый раз при обращении к контейнеру будет возвращен разные объекты.
Request - создает бин для одного HTTP запроса.
Session - аналогичен Request, но работает на уровне сессии.
Application - жизненный цикл ServletContext.
Websocket - создает бин для сессии веб-сокета
👍18🔥1
Какой результат выведет следующая программа?
Anonymous Quiz
20%
A got caught B got caught
25%
B got caught
27%
A got caught
28%
Ошибку компиляции
👍18😢12🍌2
У вас несколько бинов реализующих один интерфейс. Какой из них будет внедрятся?
Для правильного внедрения зависимостей существуют несколько способов и подходов. Самый первый из них - аннотация @Primary означает что данный бин будет внедряться по умолчанию. Так же существует аннотация @Qualifier - позволяет указать имя бина который необходим в данном месте. Так же мы можем внедрять list/map бинов. При указании имен для всех бинов-наследников одного интерфейса мы можем внедрить map где ключом будет имя бина, а значением сам бин. При внедрении list мы получим список всех бинов.
Для правильного внедрения зависимостей существуют несколько способов и подходов. Самый первый из них - аннотация @Primary означает что данный бин будет внедряться по умолчанию. Так же существует аннотация @Qualifier - позволяет указать имя бина который необходим в данном месте. Так же мы можем внедрять list/map бинов. При указании имен для всех бинов-наследников одного интерфейса мы можем внедрить map где ключом будет имя бина, а значением сам бин. При внедрении list мы получим список всех бинов.
❤🔥7👍2
Как объявить сервис в Spring? Назовите все способы которые знаете
Сервис в Spring - часть бизнес логики, но на самом абстрактном уровне для самого Spring все бины мало чем отличаются - каждый из них это, в первую очередь, это @Bean который можно объявить в классе конфигураций. Далее мы можем объявить наш класс как @Component. Используя аннотации мы можем объявить наш класс @Service что "облегчит" работу Spring при инициализации бина(все бины инициализируются в очередности от тех кто не требует ни каких внедрений и до тех кто "не может жить" без зависимостей. Сервисные слои инициализируются "посередине" и мы даем явно понять Spring когда создавать этот бин). Кроме того мы можем объявлять бины используя xml конфигурацию Spring.
Сервис в Spring - часть бизнес логики, но на самом абстрактном уровне для самого Spring все бины мало чем отличаются - каждый из них это, в первую очередь, это @Bean который можно объявить в классе конфигураций. Далее мы можем объявить наш класс как @Component. Используя аннотации мы можем объявить наш класс @Service что "облегчит" работу Spring при инициализации бина(все бины инициализируются в очередности от тех кто не требует ни каких внедрений и до тех кто "не может жить" без зависимостей. Сервисные слои инициализируются "посередине" и мы даем явно понять Spring когда создавать этот бин). Кроме того мы можем объявлять бины используя xml конфигурацию Spring.
👍23
Яндекс это же сайт, что я там буду делать?
Разговор с тимлидом команды Serverless Yandex Cloud про продуктовые исследования, фичеборды, виртуальные команды и топ-качества разработчиков.
Смотрите выпуск на YouTube канале Yandex Cloud ➡️
00:00 Приветствие
01:19 Как держать темп разработки в распределенной команде?
03:29 Про то, как работают виртуальные команды
07:50 Как получается удержать экспертизу в команде?
10:04 Про продуктовые исследования
15:04 Про работу с сообществом и custdev
19:23 Про фичеборд и голосование
23:35 Продукт для разработчиков
24:24 Про вклад стажёров в развитие продукта
28:18 "Яндекс это же сайт, что я там буду делать?" путь Андрея в Яндексе
30:45 Топ-качества разработчиков команды Serverless
35:02 Про плов и то, что объединяет
Разговор с тимлидом команды Serverless Yandex Cloud про продуктовые исследования, фичеборды, виртуальные команды и топ-качества разработчиков.
Смотрите выпуск на YouTube канале Yandex Cloud ➡️
00:00 Приветствие
01:19 Как держать темп разработки в распределенной команде?
03:29 Про то, как работают виртуальные команды
07:50 Как получается удержать экспертизу в команде?
10:04 Про продуктовые исследования
15:04 Про работу с сообществом и custdev
19:23 Про фичеборд и голосование
23:35 Продукт для разработчиков
24:24 Про вклад стажёров в развитие продукта
28:18 "Яндекс это же сайт, что я там буду делать?" путь Андрея в Яндексе
30:45 Топ-качества разработчиков команды Serverless
35:02 Про плов и то, что объединяет
YouTube
Команда Serverless в Yandex Cloud, топ-качества разработчиков
Сегодня говорим про продуктовые исследования, фичеборды, виртуальные команды и топ-качества разработчиков команды бессерверных вычислений в Yandex Cloud.
Смотрите новый выпуск подкаста "Про людей".
00:00 Приветствие
01:19 Как держать темп разработки в…
Смотрите новый выпуск подкаста "Про людей".
00:00 Приветствие
01:19 Как держать темп разработки в…
👍8🔥1
Какой класс в Spring отвечает за анализ входящих http-запросов и их направления в определенный контроллер?
В Spring за "разведение" http-запросов по соответствующим контейнерам отвечает класс DispatcherServlet. После получения запроса DispatcherServlet обращается к интерфейсу HandlerMapping, который и рассказывает DispatcherServlet какой именно котроллер отвечает за этот запрос. После обращения к контреллеру DispatcherServlet, получивший имя представления(View), обращается к ViewResolver для получения View по его имени. После создания View DispatcherServlet отправляет данные Модели в View который и отобразится в браузере.
В Spring за "разведение" http-запросов по соответствующим контейнерам отвечает класс DispatcherServlet. После получения запроса DispatcherServlet обращается к интерфейсу HandlerMapping, который и рассказывает DispatcherServlet какой именно котроллер отвечает за этот запрос. После обращения к контреллеру DispatcherServlet, получивший имя представления(View), обращается к ViewResolver для получения View по его имени. После создания View DispatcherServlet отправляет данные Модели в View который и отобразится в браузере.
👍39
Как исправить этот код, чтобы он вывел "I Love Programming Tests" корректно?
Anonymous Quiz
9%
Надо внутри while добавить i++ в конце, иначе будет бесконечный цикл.
7%
Надо в System.out.print передавать text[i].
11%
Надо объявить int i = 0.
73%
Надо выполнить все предыдущие пункты для корректной работы программы.
🥱32👍10😁9👌1🌚1