| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
parent directory.. | ||||
Добавьте необходимые импорты.
Аннотируйте класс Meal так, чтобы при старте приложения создавался бин этого класса c именем "meal" и добавлялся в контекст приложения.
Добавьте нужные импорты
Используйте необходимые аннотации и сконфигурируйте приложение так, чтобы в зависимости от времени суток в контекст добавлялся только определённый бин, который соответствует текущему времени суток:
Имя бина выберите по своему усмотрению
Добавьте необходимые импорты
Получите из контекста приложения объект текущего времени суток и объект класса Meal
Добавьте в контроллер метод, который обрабатывает GET запросы на адрес /daytime. Метод должен пожелать приятного аппетита в зависимости от времени суток. Например, если сейчас утро, запрос должен вернуть строку "It is morning now. Enjoy your breakfast". При составлении фразы используйте методы полученных из контекста объектов.
При необходимости мы можем управлять жизненным циклом бина в приложении. Для этого используется интерфейс BeanPostProcessor. Он позволяет модифицировать бины, созданные фабрикой BeanFactory. Интерфейс содержит всего два метода: postProcessBeforeInitialization() и postProcessAfterInitialization(). Первый метод вызывается перед тем, как бин будет инициализирован, второй – после. В этих методах вы можете разместить ту логику, которая вам нужна. Обычно, метод postProcessAfterInitialization() используется, чтобы обернуть объект в прокси. В самостоятельной работе мы проследим за жизненным циклом.
В файле src/main/java/exercise/CustomBeanPostProcessor.java создайте класс CustomBeanPostProcessor, который реализует интерфейс BeanPostProcessor. Не забудьте отметить его нужной аннотацией, чтобы при старте этот бин добавился в контекст приложения.
В классе создайте два метода: postProcessBeforeInitialization() и postProcessAfterInitialization(). Сигнатуру методов можно посмотреть в документации на интерфейс. Добавьте в методы вывод в консоль, чтобы можно было отследить порядок вызова этих методов. Например:
System.out.println(System.out.println("Called postProcessBeforeInitialization for bean: " + beanName));Сами бины мы не будем никак модифицировать, только отследим процесс. Оба метода должны возвращать сам бин без изменений.
В файле src/main/java/exercise/Meal.java создайте метод init() и отметьте его аннотацией @PostConstruct. Этот метод будет вызван при инициализации бина. В методе сделайте вывод в консоль, чтобы отследить процесс вызова:
System.out.println("Init bean meal");Called postProcessBeforeInitialization for bean: meal
Init bean Meal
Called postProcessAfterInitialization for bean: meal| Back | FazBrowse Home | New Git URL |