Как автоматически закрыть приложение Spring Boot

 
 
 
Сообщения:14
Мне пришло тех задание - чтобы по ендпоинту /exit происходил редирект на /exit-success, выходило сообщение о закрытии приложения, а само приложение автоматически закрывалось.
Специально для этих двух эндпоинтов я создал контроллер:
package com.example.demo.controller;

import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

@RestController
public class ShutdownController {

   @RequestMapping(value = "/exit", method = RequestMethod.GET)
    public ModelAndView exit() {
    	ModelAndView modelAndView = new ModelAndView();
        modelAndView.setViewName("redirect:/exit-success");
        return modelAndView;
    }

   @GetMapping("/exit-success")
   public String shutdownContext() {
	   return "<H2>The application is closed</H2>";
   }


}

А на метод, обрабатывающий запросы к /exit-success повесил аспект
package com.example.demo.advice;

import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class ShutdownAspect implements ApplicationContextAware{

	private ApplicationContext context;
	 
	@Override
	public void setApplicationContext(ApplicationContext ctx) throws BeansException {
		this.context = ctx;
	}
	
	@Pointcut("execution(* com.example.demo.controller.ShutdownController.shutdownContext(..))")
	private void shutdown(){}
	
	@After("shutdown()")
	public void afterAdvice(JoinPoint joinPoint) {
		((ConfigurableApplicationContext) context).close();
	}

}

Так вот - происходит все что нужно, кроме отображения надписи, что приложение закрыто. Если же я аспект убираю, то наоборот, надпись отображается, но приложение уже, ясное дело, не закрывается. Такое чувство, что аспект не дает закончить фреймворку до конца сформировать страницу. Что же тогда можно тут сделать?
Изменен:06 авг 2020 00:38
 
Модераторы:wedens
Сейчас эту тему просматривают:Нет